如何将Sql转换为Oracle查询

俊文

我有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查询?提前致谢。

MT0

在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章