2016-11-22 64 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