2012-07-26 75 views
1

返回一个常量作为命名列所以我有一个现有的SQL表达式运行良好我还需要返回一个命名列,它将返回基于后缀存在的2个值之一串。不太熟悉SQL的所有细微差别,我似乎无法获得返回的值 - 或SQL很高兴。它是这样的:SQL Server根据LIKE

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语句。

+1

欢迎堆栈溢出!请注意,标签不能合并以创建概念。也就是说,结合标签'sql'和'server'并不意味着你的问题是关于MS SQL Server的。有一个专门用于SQL Server的标签。 – Charles 2012-07-26 14:40:38

回答

1

您错过了您的案例表达式END

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

击败了我1秒 - 但我有更多的信件在我的! :) – Hogan 2012-07-26 14:39:37

+0

哦 - 还要注意,这是一个case *表达式*,而不是case *语句*。 – ruakh 2012-07-26 14:41:05

+0

@ruakh - 谢谢澄清,我正在更新select语句的过程中。 – LittleBobbyTables 2012-07-26 14:41:44

2

你只需要一个终端(两个CASE和IF)

此外,除去在SELECT(SELECT @LBC),所以你只要@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, 
0

为什么选择和变量?

更容易:

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

也许这些查询的其他部分正在改变? – Hogan 2012-07-26 14:43:17