用LIKE语句比较带连字符的字符串

时间:2019-04-10 17:48:38

标签: sql string ssms sql-like

我正在使用SQL,并且有3列“当前名称”,“给定全名”以及名称是否匹配(是或否)

问题是当我比较前两列中的字符串时,它没有显示当前结果。例如,考虑到Tushar Sharma是当前的全名,而Tushar-Sharma是从报告中提取的名称,我找不到找到证明“ Tushar Sharma”与“ Tushar-Sharma”相同的方法。

如果要在比较中包含连字符(-),以便在第3列中获得Y,该怎么办,我被LIKE语句困住了。

谢谢

3 个答案:

答案 0 :(得分:1)

一种选择是删除连字符以进行比较:

select (case when replace(given_name, '-', '') = replace(full_name, '-', '') then 'Y' else 'N' end) as names_match

您也可以将replace()like一起使用:

select (case when replace(given_name, '-', '') like '%' + replace(full_name, '-', '') '%' then 'Y' else 'N' end) as names_match

答案 1 :(得分:0)

替换-使用空格和比较,您还可以使用正则表达式或模糊匹配来改善其他条件的匹配。

AND REPLACE(CurrentName, '-', ' ') = REPLACE(GivenName, '-', ' ');

例如:

AND REPLACE('Tushar Sharma', '-', ' ') = REPLACE('Tushar-Sharma', '-', ' ')

将等于

AND 'Tushar Sharma' = 'Tushar Sharma'

答案 2 :(得分:0)

这将起作用:

select currentname,givenfullname,case when regexp_replace(currentname,' ','') like 
regexp_replace(givenfullname,' ','') the 'Y' else 'N' end as matchstatus from 
table_name;