2016-11-22 33 views
0

我需要生成一个动态凡成PL/PGSQL功能,例如: 我有这个字符串PL/PGSQL动态where

打招呼时,PostgreSQL,计算器

我需要做这个查询:

SELECT * FROM tblname WHERE tbl_col LIKE %hello% OR tbl_col LIKE %postgresql% OR tbl_col LIKE %stackoverflow%; 

有什么办法可以通过逗号分割字符串和生成动态的查询?

感谢您的帮助。

回答

0

使用any(array[...])

select * 
from tblname 
where tbl_col like any(array['%hello%', '%postgresql%', '%stackoverflow%']); 
+0

工作正常,但只有当我需要使用OR运算符查询时,如何在需要使用AND运算符时使其工作?谢谢 – Fabricio

+0

使用'all(array [...])'而不是'any(array [...])'来获得连接。 – klin

+0

正常工作,谢谢! – Fabricio

0

您可以使用SIMILAR TO运算符而不是LIKE。你可以找到的文档here

一个例子:

SELECT 
    * 
FROM 
    tblname 
WHERE 
    tbl_col SIMILAR TO '%(' || REPLACE('hello,postgresql,stackoverflow', ',', '|')|| ')%' 
+0

谢谢,它的工作。另一个问题,如果我想使用运营商,而不是OR?我需要使用什么功能?再次感谢 – Fabricio