SELECT 1='1'
đưa ra TRUE
kể từ '1'
là một hàm tạo chính xác cho INT
trong tất cả các triển khai mà tôi biết.
Nhưng SQL sử dụng kiểu gõ nghiêm ngặt, hãy xem điều đó:
# 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.
Về tiêu chuẩn (SQL 92, 99 &2003) có vẻ như không đúng:
<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> }... ]
bởi vì <quote>
chỉ được chứa trong <bit string literal>
, <hex string literal>
, ... nhưng không phải ở dạng số ...