我想在一些sql上做一个case语句,我用它来查看是否存在一行我为了安全而改变了字段名称但是你会得到我正在尝试做的事情的jist。
SELECT CASE WHEN
(SELECT table1
FROM table1 WITH (NOLOCK)
WHERE (filter1= @Product) AND (filter2= @PriceList) AND
(customer_code = '')) IS NULL THEN 0 ELSE 1 END AS Existing
但是当我在SSME中尝试它时,它给我一个参数不正确,即使我输入字符串产品代码和字符串价格列表任何身体任何想法我做错了谢谢。我认为我的语法比什么都重要。我甚至不需要第一个选择,因为我希望它从一个表返回?
EDIT2 这是我填写我的参数和sql server
显示的消息这是错误
答案 0 :(得分:0)
这是一个使用存在的完美场合:
SELECT CASE WHEN EXISTS
(SELECT 1
FROM table1 WITH (NOLOCK)
WHERE (filter1= @Product) AND (filter2= @PriceList) AND
(customer_code = '')) THEN 1 ELSE 0 END AS existing
我怀疑你可能遇到customer_code问题。请检查数据类型 - 它可能是数字,在这种情况下将其视为字符串不起作用!
在查询窗口中尝试以下操作:
declare @Product varchar(10) = '13012DB'
declare @PriceList varchar(10) = 'DBD'
declare @table1 table
(
filter1 varchar(10),
filter2 varchar(10),
customer_code varchar(10)
)
INSERT INTO @table1 VALUES ('Mary', 'Little', 'Lamb')
SELECT CASE WHEN EXISTS
(SELECT 1
FROM @table1
WHERE (filter1= @Product) AND (filter2= @PriceList) AND
(customer_code = '')) THEN 1 ELSE 0 END AS existing
INSERT INTO @table1 VALUES ('13012DB', 'DBD', '')
SELECT CASE WHEN EXISTS
(SELECT 1
FROM @table1
WHERE (filter1= @Product) AND (filter2= @PriceList) AND
(customer_code = '')) THEN 1 ELSE 0 END AS existing
应选择0然后选择1.