如何在SQL SELECT中执行CASE语句?
如何在SQL SELECT语句中执行如何在SQL SELECT中执行CASE语句?,sql,sql-server,tsql,case,Sql,Sql Server,Tsql,Case,如何在SQL SELECT语句中执行IF…THEN?是否可以更改为Case..THEN为IF..THEN,在Case..THEN中有一些错误 DECLARE @Display Varchar(10) SET @Display = '210120' DECLARE @ret Varchar(5) SET @ret = '12345' DECLARE @ret2 Varchar(5) SET @ret2 = '6789' DECLARE @Cus
IF…THEN
?是否可以更改为Case..THEN
为IF..THEN,在Case..THEN中有一些错误
DECLARE @Display Varchar(10) SET @Display = '210120'
DECLARE @ret Varchar(5) SET @ret = '12345'
DECLARE @ret2 Varchar(5) SET @ret2 = '6789'
DECLARE @Custom2 Varchar(10)
SELECT (CASE
WHEN CHARINDEX(LEFT(@Display, 1),@ret) > 0 THEN
SET @Custom2 = 'None'
WHEN CHARINDEX(LEFT(@Display, 1),@ret2) > 0 THEN
SET @Custom2 = @ret+'_'+@Display
END ) as Custom
提前谢谢您的语法有点不正确,请尝试以下方法:
SELECT @Custom2 = CASE WHEN CHARINDEX(LEFT(@Display, 1),@ret) > 0
THEN 'None'
WHEN CHARINDEX(LEFT(@Display, 1),@ret2) > 0
THEN @ret + '_' + @Display
END As Custom
这里发生的事情不匹配。您不能像现在这样使用case表达式来控制流……但您也可以将其作为一个列。现在还不完全清楚你想在这里做什么,但也许这会有所帮助
DECLARE @Display Varchar(10) SET @Display = '210120'
DECLARE @ret Varchar(5) SET @ret = '12345'
DECLARE @ret2 Varchar(5) SET @ret2 = '6789'
SELECT CASE WHEN CHARINDEX(LEFT(@Display, 1),@ret) > 0 THEN
'None'
WHEN CHARINDEX(LEFT(@Display, 1),@ret2) > 0 THEN
@ret+'_'+@Display
END as Custom
不要试图在选择查询的中间设置变量。<代码> CASE 是一个表达式(如“代码> A+B < /代码>”),它返回单个原子值,它不是一个流控制语句,它可以处理代码块和类似的东西。提示:“代码>外壳< /COD>表达式还可以有一个<代码> ELECT/<代码>子句来处理任何意外的数据。