如何使用IF-ELSE解析和更新T-SQL中的列值?

如何使用IF-ELSE解析和更新T-SQL中的列值?,sql,sql-server,tsql,Sql,Sql Server,Tsql,基于说明中的子字符串我想给另一列赋值。 示例说明列中有一个子字符串(rety#WA#hskhkhsd),现在我将检查#WA#。如果出现,我将在一个新列中指定错误答案。 我试着像一样使用来做,但我也想尝试一下如果还有 SELECT [ID] ,[DECRIPTION] ,CASE WHEN DECRIPTION LIKE '%#WR#%' THEN 'Wrong Routine' WHEN DECRIPTION LIKE '%#

基于说明中的子字符串我想给另一列赋值。 示例说明列中有一个子字符串(rety#WA#hskhkhsd),现在我将检查#WA#。如果出现,我将在一个新列中指定错误答案。 我试着像一样使用
来做,但我也想尝试一下
如果还有

SELECT
       [ID]
      ,[DECRIPTION]
      ,CASE
        WHEN DECRIPTION LIKE '%#WR#%' THEN 'Wrong Routine'
        WHEN DECRIPTION LIKE '%#RB#%' THEN 'Received Band'
        WHEN DECRIPTION LIKE '%#WA#%' THEN 'Week A'
        WHEN DECRIPTION LIKE '%#CP#%' THEN 'Change P'
        WHEN DECRIPTION LIKE '%#BQ#%' THEN 'Bad Q'
        WHEN DECRIPTION LIKE '%#RL#%' THEN 'Received L'
        END AS Short_code_detail
  FROM table_name

SQL中没有if和else,CASE用于实现相同的功能,您可以在SQL server中获得的nearset选项是IIF


以下是使用IIF而不是CASE WHEN时查询的结果。唯一的区别是IIF需要最终的ELSE条件(在这种情况下,最后一个IIF的第三个参数为“NULL”)


IF/ELSE用于流控制,即根据结果执行不同的SQL语句。它不能在Select中使用
IIF
可以使用,但与标准SQL案例相比,它只是有限的专有T-SQL语法。当前查询有什么问题?此查询需要更长的时间。实际查询可能更复杂,您确定是这个小案例导致运行时间过长吗?是的,此查询正在处理300万行,描述列的大小是4000(类似于varchar(4000))。这就是为什么执行大约需要10分钟。@HimanshuChauhan<代码>大小写
通常优于
IIF()
。它是标准的SQL,更通用。@GordonLinoff为什么更通用。你不需要嵌套它。这是真的,但我认为它并不总是真的,因为我记得使用END。。。回到过去。IIF比较短,我很忙(因为你在我读之前就回答了问题),所以我用它:)。这一直都是事实。当然,人们可能会误用这个结构,但是SQL和其他计算机语言中的
case
总是允许多种条件。(嗯,可能有人会在某个地方提出反例。)
SELECT
       [ID]
      ,[DECRIPTION]
      ,iif(DECRIPTION LIKE '%#WR#%', 'Wrong Routine',
           iif(DECRIPTION LIKE '%#RB#%', 'Received Band',
           iif(DECRIPTION LIKE '%#WA#%', 'Week A',
           iif(DECRIPTION LIKE '%#CP#%', 'Change P',
           iif(DECRIPTION LIKE '%#BQ#%', 'Bad Q',
           iif(DECRIPTION LIKE '%#RL#%', 'Received L', NULL)))))) AS Short_code_detail
  FROM table_name