使用通配符和“喜欢”来比较pgSQL中两列的内容

问题描述

我在联接和后续更新中使用的两个单独的表中有列。我希望能够查看一列是否在第二列中捕获了所有内容

例如,这是每列内容的样本:

city_table1 | city_table2
Portsmouth    Portsmouth,New Hampshire,USA

我希望能够在select语句中具有where子句,该子句将根据city_table1中的内容匹配两列(但我不能仅根据内容差异进行左右修剪),所以我我正在设想类似的东西

where city_table1 like ('%' + city_table2 '%')

我的逻辑在这里吗?我应该在where子句中引用两个字段吗?我曾在postgres中尝试过此方法,但当我知道语法正确时,它没有任何作用。

谢谢!

解决方法

Postgres使用||连接字符串。所以:

where city_table2 like ('%' || city_table1 || '%')

此外,您还可以进行比较。 shorter 字符串被'%'包围。

而且,使用正则表达式会更简单:

where city_table2 ~ city_table1