SQL 检查信
SQL Check Letter
我正在尝试应用用于报告目的的红色/琥珀色/绿色逻辑。
COLUMN_NAME 将有一个由三个字符组成的字符串,其中包含字母 'R'、'A' 和 'G.
的组合
我正在尝试应用以下逻辑:
如果 COLUMN_NAME 包含 'R' 那么 MAJOR_ISSUE
如果列包含 'A' 而不是 'R' 那么 MINOR_ISSUE
其他好
能否请您告诉我如何修改下面的 SQL 更新语句来实现此目的?
UPDATE DBO.TABLE_NAME
SET [COLUMN_RESULT] =
(
CASE WHEN COLUMN_NAME LIKE '%R%'THEN 'MAJOR_ISSUE'
WHEN COLUMN_NAME LIKE '%A%' ***AND NOT LIKE %R%*** THEN 'MINOR ISSUE'
ELSE 'OK'
END
)
如有任何帮助,我们将不胜感激
AND
是逻辑运算符,两边需要两个完整的布尔表达式。
boolean AND boolean
LIKE
是一个布尔运算符,它的两边都需要一个字符串。
string LIKE string
所以...
WHEN COLUMN_NAME LIKE '%A%' AND COLUMN_NAME NOT LIKE '%R%' THEN 'MINOR ISSUE'
或者,用括号使其更明显...
WHEN (COLUMN_NAME LIKE '%A%') AND (COLUMN_NAME NOT LIKE '%R%') THEN 'MINOR ISSUE'
一个case
表达式按顺序检查条件,所以你不需要检查已经处理过的条件:
update DBO.Table_Name
set Column_Result = case
when Column_Name like '%R%' then 'MAJOR_ISSUE'
-- At this point Column_Name cannot contain an 'R'.
when Column_Name like '%A%' then 'MINOR_ISSUE'
else 'OK' end;
请注意,在 case
计算 没有短路的表达式中存在各种问题,例如当您已经检查了零值时,可能会被零除,因为表达式的计算顺序是乱序的。
我正在尝试应用用于报告目的的红色/琥珀色/绿色逻辑。
COLUMN_NAME 将有一个由三个字符组成的字符串,其中包含字母 'R'、'A' 和 'G.
的组合我正在尝试应用以下逻辑: 如果 COLUMN_NAME 包含 'R' 那么 MAJOR_ISSUE 如果列包含 'A' 而不是 'R' 那么 MINOR_ISSUE 其他好
能否请您告诉我如何修改下面的 SQL 更新语句来实现此目的?
UPDATE DBO.TABLE_NAME
SET [COLUMN_RESULT] =
(
CASE WHEN COLUMN_NAME LIKE '%R%'THEN 'MAJOR_ISSUE'
WHEN COLUMN_NAME LIKE '%A%' ***AND NOT LIKE %R%*** THEN 'MINOR ISSUE'
ELSE 'OK'
END
)
如有任何帮助,我们将不胜感激
AND
是逻辑运算符,两边需要两个完整的布尔表达式。
boolean AND boolean
LIKE
是一个布尔运算符,它的两边都需要一个字符串。
string LIKE string
所以...
WHEN COLUMN_NAME LIKE '%A%' AND COLUMN_NAME NOT LIKE '%R%' THEN 'MINOR ISSUE'
或者,用括号使其更明显...
WHEN (COLUMN_NAME LIKE '%A%') AND (COLUMN_NAME NOT LIKE '%R%') THEN 'MINOR ISSUE'
一个case
表达式按顺序检查条件,所以你不需要检查已经处理过的条件:
update DBO.Table_Name
set Column_Result = case
when Column_Name like '%R%' then 'MAJOR_ISSUE'
-- At this point Column_Name cannot contain an 'R'.
when Column_Name like '%A%' then 'MINOR_ISSUE'
else 'OK' end;
请注意,在 case
计算 没有短路的表达式中存在各种问题,例如当您已经检查了零值时,可能会被零除,因为表达式的计算顺序是乱序的。