首页 > 解决方案 > 从表中的多个列中搜索特定值

问题描述

我有一个带有示例列的表::

P_ID    P1_QUALITY      P2_QUALITY      P3_QUALITY
1           A               C               C
2           A+              C               C
3           A               C               C
4           B+              C               C
5           A-              C               C

( ) 中只有一列P1_QUALITY, P2_QUALITY, P3_QUALITY不包含 ' C',就像这里一样P1_QUALITY,下次可能是P3_QUALITY。我必须得到column name不包含值'C'的值。我怎样才能做到这一点 ?

标签: sqlsql-server

解决方案


使用CASEwith NOT LIKE's 您可以获得值不以 'C' 开头的第一列的名称

(假设也可能有值“C+”或“C-”)

SELECT t.*,
(CASE 
 WHEN P1_QUALITY NOT LIKE 'C%' THEN 'P1_QUALITY'
 WHEN P2_QUALITY NOT LIKE 'C%' THEN 'P2_QUALITY'
 WHEN P3_QUALITY NOT LIKE 'C%' THEN 'P3_QUALITY'
 END) AS [NotC]
FROM YourTable t;

如果您希望查询限制那些没有 3 'C' 的人?
只需添加这样的WHERE子句:

WHERE CONCAT(P1_QUALITY, P2_QUALITY, P3_QUALITY) NOT LIKE 'C%C%C%'

推荐阅读