我有SQL查询,如:-
SELECT CASE WHEN (NOT EXISTS(SELECT NULL
FROM [Customers] AS t0
WHERE NOT (LEN(t0.[ContactName]) > 0)
)) THEN 1 ELSE 0 END AS [value]
请让我知道如何转换为oracle查询?提前致谢。俊
在Oracle中,空字符串和NULL
都相同,故LENGTH( NULL )
与LENGTH( '' )
将两者给予NULL
,而不是0
。
因此,您的查询将是:
SELECT CASE
WHEN NOT EXISTS(
SELECT 1
FROM Customers
WHERE ContactName IS NULL
)
THEN 1
ELSE 0
END AS value
FROM DUAL
更新:
如果我想查找所有记录的contactname长度大于3怎么办
SELECT CASE
WHEN NOT EXISTS(
SELECT 1
FROM Customers
WHERE LENGTH( ContactName ) <= 2
OR ContactName IS NULL
)
THEN 1
ELSE 0
END AS value
FROM DUAL
要么
SELECT CASE
WHEN NOT EXISTS(
SELECT 1
FROM Customers
WHERE COALESCE( LENGTH( ContactName ), 0 ) <= 2
)
THEN 1
ELSE 0
END AS value
FROM DUAL
注意:要使用索引,您将需要在相应示例上LENGTH( ContactName )
或COALESCE( LENGTH( ContactName ), 0 )
针对相应示例使用基于函数的索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句