gpt4 book ai didi

sql - SQL'%'通配符是否捕获空值?

转载 作者:行者123 更新时间:2023-12-04 13:14:03 24 4
gpt4 key购买 nike

最近我遇到了一个查询问题,它没有返回预期返回的所有内容。按条件选择的部分查询如下:

AND field LIKE 
CASE WHEN @val = 1 THEN
'%'
ELSE
'N'
END

现在,当@val 为 1 时,我希望这段代码基本上什么也不做,因为在条件下基本上可以接受任何值,包括空值。

我错了吗?如果是这样,有人有解决方案吗?我在想一些类似的东西

AND field LIKE 
CASE WHEN @val = 1 THEN
'%' OR ISNULL(field)
ELSE
'N'
END

然而 SQL 并不是那样工作的,但这基本上是我希望完成的。

谢谢大家,很抱歉,如果这是重复的,我找不到答案。

最佳答案

根据您要完成的任务,您的查询似乎可以针对此进行优化:

AND (@val = 1 OR field = 'N')

LIKE 似乎没有理由。

更新

由于您试图了解 LIKECASE 的行为而不是处理现有查询,因此这里是已接受答案的一些变体。

要在 LIKE 中使用 CASE,您还必须使用类似 COALESCE 的方法来处理 null 情况。

COALESCE(Field, '') LIKE (CASE WHEN @val = 1 THEN '%' ELSE 'N' END)

否则,您可以在 CASE 中使用 LIKE(例如接受的答案),但可能是个人偏好,这似乎更容易阅读:

1 = (CASE WHEN @val = 1 OR Field LIKE 'N' THEN 1 ELSE 0 END)

关于sql - SQL'%'通配符是否捕获空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52425941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com