SELECT 1='1'
देता है TRUE
चूंकि '1'
INT
. के लिए एक सही कंस्ट्रक्टर है मुझे ज्ञात सभी कार्यान्वयन में।
लेकिन SQL सख्त टाइपिंग का उपयोग करता है, इसे देखें:
# 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.
मानक (एसक्यूएल 92, 99 और 2003) के संबंध में यह गलत लगता है:
<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> }... ]
क्योंकि <quote>
केवल <bit string literal>
. में निहित है , <hex string literal>
, ... लेकिन सांख्यिक अक्षरों में नहीं...