gpt4 book ai didi

sql - 使用 CASE 语句的多个条件

转载 作者:行者123 更新时间:2023-12-03 02:06:19 25 4
gpt4 key购买 nike

我需要查询一些数据。这是我构建的查询,但对我来说效果不佳。在本示例中,我使用 AdventureWorks 数据库。

SELECT * FROM [Purchasing].[Vendor] WHERE PurchasingWebServiceURL LIKE 
case
// In this case I need all rows to be returned if @url is '' or 'ALL' or NULL
when (@url IS null OR @url = '' OR @url = 'ALL') then ('''%'' AND PurchasingWebServiceURL IS NULL')
//I need all records which are blank here including nulls
when (@url = 'blank') then (''''' AND PurchasingWebServiceURL IS NULL' )
//n this condition I need all record which are not like a particular value
when (@url = 'fail') then ('''%'' AND PurchasingWebServiceURL NOT LIKE ''%treyresearch%''' )
//Else Match the records which are `LIKE` the input value
else '%' + @url + '%'
end

这对我不起作用。如何在同一 CASETHEN 中拥有多个 where 条件子句?我怎样才能做到这一点?

最佳答案

这不是剪切和粘贴。 CASE 表达式必须返回一个值,而您返回的是一个包含 SQL 的字符串(从技术上讲,它是一个值,但类型错误)。我想这就是你想写的:

SELECT * FROM [Purchasing].[Vendor] WHERE  
CASE
WHEN @url IS null OR @url = '' OR @url = 'ALL'
THEN PurchasingWebServiceURL LIKE '%'
WHEN @url = 'blank'
THEN PurchasingWebServiceURL = ''
WHEN @url = 'fail'
THEN PurchasingWebServiceURL NOT LIKE '%treyresearch%'
ELSE PurchasingWebServiceURL = '%' + @url + '%'
END

我还怀疑这可能在某些方言中不起作用,但由于没有 bool 值,现在无法测试(Oracle,我正在看着你)。

但是,由于 @url 不依赖于表值,为什么不进行三个不同的查询,并根据您的参数选择要评估的查询呢?

关于sql - 使用 CASE 语句的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031501/

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