Сравнения с NULL в SQL

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, несмотря на беспорядок.

6
задан Deduplicator 24 February 2015 в 02:01
поделиться