我有两个字符串列,如下所示
Column01 Column02
ABC School System Worked in Private school.
我想匹配这些列,以便如果列B中有来自列A的任何单个单词,则将给出匹配结果。在这种情况下,两列中都出现了“学校”一词,因此应将其视为匹配项。
可以将A列中的单个单词定义为长度超过3且在两侧都具有空格或在一侧中都具有空格而在另一侧中都没有空格的任何字母字符串(以迎合开始和结尾的单词) 。
如何在SQL Server中执行此操作?
您可以XML
使用空格作为标记来创建一个,然后使用.nodes()
来从xml
列中获取单词并将它们进行比较。像这样
WITH Table1 as
(
SELECT 1 as ID,'ABC School System' as col1, 'Worked in Private school' as col2
), CTE2 as
(
SELECT M.id,c.value('text()[1]','VARCHAR(100)') COLLATE Latin1_General_CI_AS as col1val,c2.value('text()[1]','VARCHAR(100)') COLLATE Latin1_General_CI_AS as col2val
FROM
(
SELECT id,
CONVERT(XML,'<i>' + REPLACE(col1,' ','</i><i>') + '</i>') col1,
CONVERT(XML,'<i>' + REPLACE(col2,' ','</i><i>') + '</i>') col2
FROM Table1
)M
CROSS APPLY col1.nodes('i') as t(c)
CROSS APPLY col2.nodes('i') as t2(c2)
)
SELECT ID,col1val,col2val
FROM CTE2
WHERE col1val = col2val
AND LEN(col1val) > 3
AND LEN(col2val) > 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句