Сопоставление значений столбцов и игнорирование специальных символов в строках в PostgreSQL 11.0 - PullRequest
0 голосов
/ 03 августа 2020

У меня есть следующая таблица в PostgreSQL 11.0

name                                                id                          name_matched                                      
0.5% timolol fixed combination ophthalmic solution  3275172                     brimonidine
drop)                                               3275173                     brimonidine tartrate
0.2% w                                              3275174                     chlorhexidine digluconate
0.2μg act-hib®                                      3275175                     act hib
1.0% prednisolone acetate association               3275176                     gatifloxacin
0.3% topical minocycline ointment                   3275177                     minocycline.

Я хотел бы сохранить только те строки, где name = name_matched

Когда я попытался выполнить запрос ниже, мне не хватало row4 и row6 из-за специальных символов в значении имени. Как я могу игнорировать эти символы и получить эти строки в моем выводе.

select *
FROM tbl
where name not ilike '%' || name_matched || '%'

1 Ответ

0 голосов
/ 03 августа 2020

Я думаю, что logi c, который вы пытаетесь сформулировать здесь, заключается в том, что name_matched должна быть подстрокой name, чтобы найти совпадение:

SELECT *
FROM tbl
WHERE name ILIKE '%' || name_matched || '%';

Если приведенное выше может давать несколько ложных срабатываний (или отрицательных), тогда мы могли бы рассмотреть возможность использования здесь регулярного выражения, но, возможно, вам не нужно этого делать.

...