2017-09-15 31 views
0

假設你有一個這樣的查詢:如何在PostgreSQL中使用LIKE運算符和佔位符語法?

SELECT * FROM the_table WHERE (name LIKE %$1%) LIMIT 10

而一個值數組這樣的:

[tyrone]

查詢工作而不會與LIKE操作使用%%語法。這些想法可以結合嗎?對LIKE操作符的任何引用我都能找到放棄佔位符的使用。

我收到試圖上面的查詢時以下錯誤:

{ 「名稱」: 「錯誤」, 「長度」:90, 「嚴重性」: 「ERROR」, 「代碼」:」 42601「,」position「:」38「,」file「:」scan.l「,」line「:」1086「,」routine「:」scanner_yyerror「}

回答

1

SQL沒有字符串插值所以你不能在字符串中使用佔位符。您必須改爲使用連接,例如

SELECT * FROM the_table WHERE (name LIKE '%' || $1 || '%') LIMIT 10 

注意的'%' || NULL結果是NULL

+0

感謝您花時間回答這個問題。限制Google服務使用的缺點#50:現有答案未在duckduckgo中顯示 –