【发布时间】:2021-07-28 06:10:18
【问题描述】:
我有 2 列试图查看两个字符串之间是否存在部分匹配。 A 列有字符串:0C000702AA-G,B 列有字符串 S0C000702AB-DI。我确实尝试过:
CASE WHEN ColumnA LIKE '%' + ColumnB + '%' THEN '1' ELSE '0' END AS 'Match'
但它返回一个 0。有没有更好的方法来查看是否几乎匹配?
A 列 = 0C000702AA-G,B 列 = S0C000702AB-DI。如您所见,B 列与 A 列几乎相同,B 具有前缀“S”并以“AB-DI”结尾。结果应该返回 1,因为中间 '0C000702AA' 的部分两边是相同的。
我刚刚测试过:
CASE WHEN '%' + ColumnA + '%' LIKE '%' + ColumnB + '%' THEN '1' ELSE '0' END AS 'Match'
仍然返回 0
【问题讨论】:
-
这种逻辑永远不会起作用,因为 ColumnA 没有完全包含在 ColumnB 中。为了提出解决方案,您需要更准确地了解 ColumnA 中的字符串有多少需要匹配 ColumnB 的一部分。
-
你的意思是我应该尝试子字符串匹配吗?我认为可行,但问题是并非所有代码的长度都相同。
-
我不知道您应该尝试什么,直到您可以更具体地了解您的匹配要求。究竟什么才是“部分匹配”?
-
@RuanduPreez 。 . .因为您接受了答案,所以您劝阻了可能会帮助您回答的其他人。
-
@RuanduPreez,戈登是对的。由于我的回答没有直接回答您的问题,请不要接受我的回答,以便有人可能会提供更好的解决方案来帮助您。
标签: sql sql-server tsql