NULLIF
доступно как для Oracle ( doc ), так и для SQL Server ( doc ).Это выражение должно работать:
NULLIF(column, '') IS NOT NULL
Если на обоих серверах column
равно NULL
, то вывод NULLIF
просто пропустит значение NULL
.На SQL Server '' = ''
, поэтому вывод NULLIF
будет NULL
.В Oracle ''
уже NULL
, поэтому он проходит.
Это мой тест на SQL Server 2008 R2 Express:
WITH SampleData AS
(SELECT 1 AS col1, NULL AS col2
UNION ALL
SELECT 2, ''
UNION ALL
SELECT 3, 'hello')
SELECT *
FROM SampleData
WHERE NULLIF(col2, '') IS NOT NULL;
И это мой теств Oracle 10g XE:
WITH SampleData AS
(SELECT 1 AS col1, NULL AS col2 FROM DUAL
UNION ALL
SELECT 2, '' FROM DUAL
UNION ALL
SELECT 3, 'hello' FROM DUAL)
SELECT *
FROM SampleData
WHERE NULLIF(col2, '') IS NOT NULL;
Оба возвращают 3
, как и ожидалось.