LIKE оператор для сравнения строк с дефисом - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю в SQL, и у меня есть 3 столбца Текущее имя, Полное имя и Соответствуют ли имена (Да или Нет)

Проблема в том, что когда я сравниваю строки в первых 2 столбцах, он не показывает мне текущий результат. Например, я не нахожу способ доказать, что «Тушар-Шарма» совпадает с «Тушар-Шарма», учитывая, что Тушар-Шарма является текущим полным именем, а Тушар-Шарма - это имя, которое было извлечено из отчета.

Я застрял в операторе LIKE относительно того, что делать, если я хочу, чтобы дефис (-) был включен в сравнение, чтобы я получил Y в 3-м столбце.

Спасибо

Ответы [ 3 ]

1 голос
/ 10 апреля 2019

Один из вариантов - удалить дефис для сравнения:

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
0 голосов
/ 13 апреля 2019

это будет работать:

select currentname,givenfullname,case when regexp_replace(currentname,' ','') like 
regexp_replace(givenfullname,' ','') the 'Y' else 'N' end as matchstatus from 
table_name; 
0 голосов
/ 10 апреля 2019

Заменить - с пробелами и сравнением, вы также можете использовать регулярное выражение или нечеткое сопоставление, чтобы улучшить совпадение для других условий.

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

Ex:

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

будет равно

AND 'Tushar Sharma' = 'Tushar Sharma'
...