#sql #postgresql #wildcard
#sql #postgresql #подстановочный знак
Вопрос:
у меня есть столбцы в двух отдельных таблицах, которые я использую при объединении и последующем обновлении. я хочу иметь возможность видеть, все ли содержимое одного столбца записано во втором столбце.
например, вот образец содержимого из каждого столбца:
city_table1 | city_table2
Portsmouth Portsmouth, New Hampshire, USA
я хочу иметь возможность иметь предложение where в операторе select, которое будет соответствовать двум столбцам на основе содержимого в city_table1 (но я не могу просто выполнить обрезку влево или вправо на основе различий в содержимом), поэтому я предполагаю что-то вроде
where city_table1 like ('%' city_table2 '%')
моя логика здесь не работает? должен ли я ссылаться на два поля в этом предложении where? я пробовал это в postgres и не получил никаких результатов, хотя я знаю, что это должно сработать, если у меня правильный синтаксис.
Спасибо!
Комментарии:
1. Примечание: Немного странно называть столбец с
table
инфиксом as…2. SQL использует
||
для объединения строк, как и Postgres3. о, я знаю — это фиктивные имена просто для наглядности
Ответ №1:
Postgres использует ||
для объединения строк. Итак:
where city_table2 like ('%' || city_table1 || '%')
Кроме того, у вас есть сравнение в обратном направлении. Более короткая строка окружена '%'
.
И это было бы проще с регулярными выражениями:
where city_table2 ~ city_table1