【发布时间】:2018-04-30 06:29:31
【问题描述】:
我正在尝试评估特定列以返回五个不同的列 - 但这些列基于 CASE 语句中的相同表达式。
CASE WHEN va.HIN LIKE '%[-=!@#$%^&*()<>?:|\;./,]%' THEN 1
ELSE 0
END AS [Invalid] ,
CASE WHEN va.HIN LIKE '%[-=!@#$%^&*()<>?:|\;./,]%' THEN 0
ELSE 1
END AS [validMICcode] ,
CASE WHEN va.HIN LIKE '%[-=!@#$%^&*()<>?:|\;./,]%' THEN 0
ELSE 1
END AS [validSerialNumber] ,
CASE WHEN va.HIN LIKE '%[-=!@#$%^&*()<>?:|\;./,]%' THEN 0
ELSE 1
END AS [validFormat] ,
CASE WHEN va.HIN LIKE '%[-=!@#$%^&*()<>?:|\;./,]%' THEN 0
ELSE 1
END AS [validProductionYear] ,
我觉得导致有问题的表/列被搜索五次,但我无法弄清楚如何重写它 - 或者是否有可能 - 进行一次模式搜索并根据一次搜索。
我正在尝试不同的变体,但我无法为这个问题想出正确的语法:
CASE WHEN va.HIN LIKE '%[-=!@#$%^&*()<>?:|\;./,]%' THEN 1
ELSE 0
CASE WHEN 1 THEN 1 END AS [Invalid]
CASE WHEN 0 THEN 0 END AS [validMICode]
CASE WHEN 0 THEN 0 END AS AS [validSerialNumber]
CASE WHEN 0 THEN 0 END AS AS [validFormat]
CASE WHEN 0 THEN 0 END AS AS [validProductionYear]
END
【问题讨论】:
-
这对你有用吗?
标签: tsql case sql-server-2014