sqlserver中的模式匹配
我想检查“Key”是否遵循与“Raw_Key”相同的模式。 因此,我为此编写了以下代码sqlserver中的模式匹配,sql,sql-server,Sql,Sql Server,我想检查“Key”是否遵循与“Raw_Key”相同的模式。 因此,我为此编写了以下代码 -------------------------------- ModelName | Key | Raw_Key| -------------------------------- Series 1 JKC VDQA JKC-VDQA Series 12 JKC-VDQAJ JKC-VDQA Series 3 JKCVDQA JKC-VDQA Seri
--------------------------------
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
因为“钥匙”显然遵循了这个模式。为什么消息列仍然显示错误?我需要一个额外的专栏,因此我有案例陈述在这里。没有前导空格或尾随空格。我认为您的逻辑是反向的:
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
你能在这里定义模式吗?只是空格被视为连字符,并且它们具有相同的字符数,或者字符需要匹配还是…?确认
Raw_Key
和Key
列中没有尾随空格和前导空格。我看到的唯一“问题”是最后一行不应该给出“Error”。最后一行的键
是否包含任何尾随空格?请尝试使用类似“JKC%VDQA”的TRIM(Key)
。如果您确信自己的示例编写得很好,请检查它,如果您需要提供一个示例,因为正如您所看到的,提供的dbfiddle显示您的代码可以工作。
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
SELECT *,
(CASE WHEN Key LIKE 'JKC%VDQA' AND Raw_key = 'JKC-VDQA' THEN '' ELSE 'Error' END) as Message
FROM #Keys