SQL Server基于LIKE将常量作为命名列返回

时间:2012-07-26 14:37:03

标签: sql sql-server

所以我有一个运行良好的现有SQL表达式我还需要返回一个命名列,该列将根据字符串后缀的存在性返回2个值中的一个。不太熟悉SQL的所有细微差别,我似乎无法获得值返回 - 或者SQL要快乐。它是这样的:

DECLARE @LBC nvarchar(3) = 'LBC'
DECLARE @CBD nvarchar(3) = 'CBD'

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN
@CBD 
ELSE (SELECT @LBC) AS [AssayType],

关于AS关键字的眯眼。尝试使用具有类似错误的IF语句。

3 个答案:

答案 0 :(得分:2)

你只需要一个END(对于CASE和IF)

此外,删除(SELECT @LBC)中的SELECT,以便只有@LBC

DECLARE @LBC nvarchar(3) = 'LBC'
DECLARE @CBD nvarchar(3) = 'CBD'

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' 
     THEN @CBD 
     ELSE @LBC 
END AS [AssayType],

IF tblWellReadingResult_7.test_code LIKE '%CBD%' THEN @CBD ELSE @LBC END AS AssayType,

答案 1 :(得分:1)

您的案例表达中缺少END

CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN @CBD  
    ELSE @LBC END AS [AssayType], 

答案 2 :(得分:0)

为什么选择和变量?

更简单:

--select 
CASE WHEN tblWellReadingResult_7.test_code LIKE '%CBD%' THEN
'LBC' 
ELSE 'LBC' END AS [AssayType] --, and another fields
-- From yourTable