如何在 SQL SELECT 中执行 CASE 语句?

How to perform a CASE statement in an SQL SELECT?

如何在 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  @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