excel中的case语句显示不正确

时间:2017-08-07 10:19:05

标签: sql sql-server

我想在一些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

显示的消息

enter image description here

这是错误

enter image description here

1 个答案:

答案 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.