我试图做一个不精确的连接(我不确定什么是正确的术语)我可以执行模式匹配.基本上,而不是这样做JOIN:
.... JOIN .... ON (t1.col = t2.col)
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
.... JOIN .... ON (t1.col ILIKE %(t2.col)% )
Run Code Online (Sandbox Code Playgroud)
第二个例子显然不是正确的语法.有没有办法做那样的事情?
ber*_*nie 25
.... JOIN .... ON t1.col ILIKE '%' || t2.col || '%'
Run Code Online (Sandbox Code Playgroud)
请注意,如AFAIK所写,PostgreSQL将无法使用任何索引来加速连接处理.
bob*_*nce 17
另一种连接方式是"t2.col的值是t1.col的子字符串":
... AS t1 JOIN ... AS t2 ON POSITION(t2.col IN t1.col)<>0
Run Code Online (Sandbox Code Playgroud)
这仍然不能使用索引,但优点是您不必担心%和否则将开始匹配所有内容的_字符t2.col.
如果您需要不区分大小写的匹配,ILIKE并且您没有使用citext,LOWER()则在使用之前需要两个列POSITION().
| 归档时间: |
|
| 查看次数: |
17309 次 |
| 最近记录: |