我看到this question和測試的答案,但注意到,執行SELECT ... WHERE column LIKE "%string%" OR string LIKE CONCAT("%", column, "%")
檢查字符串是否包含任何字符串的條件是什麼,反之亦然?
串LIKE CONCAT("%", column, "%")
如果列的值包含%
其次,如果該列是null,則返回true這是不正確的,因爲該列包含什麼是不安全。
我看到this question和測試的答案,但注意到,執行SELECT ... WHERE column LIKE "%string%" OR string LIKE CONCAT("%", column, "%")
檢查字符串是否包含任何字符串的條件是什麼,反之亦然?
串LIKE CONCAT("%", column, "%")
如果列的值包含%
其次,如果該列是null,則返回true這是不正確的,因爲該列包含什麼是不安全。
你可以只逃脫百分號,如果有的話:
SELECT column1
FROM table
WHERE (
column2 LIKE "%string%"
OR string LIKE CONCAT("%", REPLACE(column2, '%', '|%'), "%") ESCAPE |
)
AND column2 IS NOT NULL;
的缺省轉義字符是反斜線但這不是ANSI標準,可以與如果你正在構建一個工作疼痛用另一種語言查詢。所以我使用LIKE ... ESCAPE
syntax來指定我自己的逃脫。
CONCAT()
返回NULL
if any of its arguments are null,所以如果你擔心這一點,只需check for it。
'CONCAT()'returns' NULL' [如果它的任何參數都是空的] [2],所以如果你擔心這一點,只需[檢查它] [3]。我知道,但忽略但它是非常重要的! – aidonsnous
看起來您正在使用LIKE查看MySQL ESCAPE CHARACTERS ..這裏是鏈接並查找轉義字符:http://www.techonthenet.com/mysql/like.php – Japongskie