我正在使用SQL,并且有3列“当前名称”,“给定全名”以及名称是否匹配(是或否)
问题是当我比较前两列中的字符串时,它没有显示当前结果。例如,考虑到Tushar Sharma是当前的全名,而Tushar-Sharma是从报告中提取的名称,我找不到找到证明“ Tushar Sharma”与“ Tushar-Sharma”相同的方法。>
如果要在比较中包含连字符(-),以便在第3列中获得Y,该怎么办,我被LIKE语句困住了。
谢谢
答案 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;