SELECT 1='1'
дава TRUE
от '1'
е правилен конструктор за INT
във всички познати ми реализации.
Но SQL използва стриктно въвеждане, вижте това:
# SELECT 1=CAST('1' AS TEXT);ГРЕШКА:операторът не съществува:integer =textLINE 1:SELECT 1=CAST('1' AS TEXT); ^СЪВЕТ:Нито един оператор не съответства на даденото име и тип(ове) на аргумента. Може да се наложи да добавите изрични преобразувания на типове.
По отношение на стандарта (SQL 92, 99 и 2003) изглежда, че е грешен:
<предварителен> <литерал> ::=<числов литерал със знак> | <общ литерал> <общ литерал> ::=<литерал на символен низ> | <национален символен низов литерал> | <битов низов литерал> | <шестнадесетичен низов литерал> | <литерал за дата и час> | <интервален литерал> <числов литерал със знак> ::=[ <знак> ] <числов литерал без знак> <числов литерал без знак> ::=<точен числов литерал> | <приблизителен числов литерал> <точен числов литерал> ::=<цяло число без знак> [ <точка> [ <цяло число без знак> ] ] | <точка> <цяло число без знак> <цяло число без знак> ::=<цифра>... <литерал на символен низ> ::=[ <въвеждащ><спецификация на набор от знаци> ] <цитат> [ <представяне на знаци>... ] [ { ... [ <представяне на знаци>... ] }... ]
защото
се съдържа само в
, <шестнадесетичен низов литерал>код> , ... но не и в числови литерали...