sql >> Databáze >  >> RDS >> Mysql

Je 1 vždy rovna '1' v SQL?

SELECT 1='1' dává TRUE od '1' je správný konstruktor pro INT ve všech známých implementacích.

Ale SQL používá striktní typování, viz:

# SELECT 1=CAST('1' AS TEXT);
ERROR:  operator does not exist: integer = text
LINE 1: SELECT 1=CAST('1' AS TEXT);
                ^
HINT:  No operator matches the given name and argument type(s). You might need to add  explicit type casts.

Pokud jde o standard (SQL 92, 99 a 2003), zdá se, že je nesprávný:

     <literal> ::=
            <signed numeric literal>
          | <general literal>

     <general literal> ::=
            <character string literal>
          | <national character string literal>
          | <bit string literal>
          | <hex string literal>
          | <datetime literal>
          | <interval literal>

     <signed numeric literal> ::=
          [ <sign> ] <unsigned numeric literal>

     <unsigned numeric literal> ::=
            <exact numeric literal>
          | <approximate numeric literal>

     <exact numeric literal> ::=
            <unsigned integer> [ <period> [ <unsigned integer> ] ]
          | <period> <unsigned integer>

     <unsigned integer> ::= <digit>...

     <character string literal> ::=
          [ <introducer><character set specification> ]
          <quote> [ <character representation>... ] <quote>
            [ { <separator>... <quote> [ <character representation>... ] <quote> }... ]

protože <quote> je obsažen pouze v <bit string literal> , <hex string literal> , ... ale ne v číselných literálech...



  1. MySQL uděluje databázi všechna oprávnění kromě jedné tabulky

  2. Nástroje pro práci s uloženými procedurami v Oracle v týmu?

  3. Existuje způsob, jak zjistit své aktuální uživatelské jméno v mysql?

  4. Oracle:import záznamů z textového souboru odděleného tabulátory do databáze pomocí pl-sql