使用通配符和'like'来比较pgSQL中两列的内容

mpc*_*c83 4 sql postgresql wildcard

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

例如,以下是每列的内容示例:

city_table1 | city_table2
Portsmouth    Portsmouth, New Hampshire, USA
Run Code Online (Sandbox Code Playgroud)

我希望能够在 select 语句中有一个 where 子句,该子句将根据 city_table1 中的内容匹配两列(但我不能只根据内容差异进行左或右修剪),所以我设想就像是

where city_table1 like ('%' + city_table2 '%')
Run Code Online (Sandbox Code Playgroud)

我的逻辑错了吗?我应该引用此 where 子句中的两个字段吗?我在 postgres 中尝试过这个,但当我知道如果我的语法正确的话它应该可以工作时,没有得到任何结果。

谢谢你!

Gor*_*off 6

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

where city_table2 like ('%' || city_table1 || '%')
Run Code Online (Sandbox Code Playgroud)

另外,你还可以进行向后比较。较短字符串被 包围'%'

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

where city_table2 ~ city_table1
Run Code Online (Sandbox Code Playgroud)