SQL Server中的模式匹配

时间:2018-07-10 13:27:20

标签: sql sql-server

--------------------------------
ModelName  |   Key  |    Raw_Key|
--------------------------------
Series 1   JKC VDQA      JKC-VDQA
Series 12  JKC-VDQAJ     JKC-VDQA
Series 3   JKCVDQA       JKC-VDQA
Series 4   JKCVDQA       MZQ-DWA

我想检查'Key'是否遵循与'Raw_Key'相同的模式。 因此,我为此编写了以下代码。

SELECT *,
CASE WHEN Key LIKE 'JKC%VDQA' AND Raw_key<>'JKC-VDQA' THEN 'Error' ELSE '' END Message
FROM #Keys

但是代码给出了这样的输出。


ModelName  |   Key  |    Raw_Key|  Message
-------------------------------------------
Series 1   JKC VDQA      JKC-VDQA   Error
Series 2   JKC-VDQAJ     JKC-VDQA   Error
Series 3   JKCVDQA       JKC-VDQA   Error
Series 4   JKCVDQA       MZQ-DWA    Error

因为“键”显然遵循该模式。为什么“消息”列仍显示错误?我需要额外的一列,因此这里有案例说明。没有前导或尾随空格。

1 个答案:

答案 0 :(得分:0)

我认为您的逻辑是倒退的:

SELECT *,
       (CASE WHEN Key LIKE 'JKC%VDQA' AND Raw_key = 'JKC-VDQA' THEN '' ELSE 'Error' END) as  Message
FROM #Keys