ANSI-92 SQL требует, чтобы сравнения с NULL
оценивались как "фальшивые", например:
SELECT * FROM table WHERE field = NULL
SELECT * FROM table WHERE field != NULL
Вернут обе строки, потому что NULL
не может быть так скомпонован. Вместо этого предикаты IS NULL
и IS NOT NULL
должны использоваться:
SELECT * FROM table WHERE field IS NULL
SELECT * FROM table WHERE field IS NOT NULL
Исследования показали мне, что Oracle 1, PostgreSQL, MySQL и SQLite поддерживают синтаксис ANSI. Добавьте в этот список DB2 и Firebird.
Помимо SQL сервера с выключенным ANSI_NULLS ANSI_NULLS
, какие другие СУБД поддерживают не-ANSI синтаксис?
1 Вся пустая строка = NULL
, несмотря на беспорядок.