我在從數據庫中選擇字符串時遇到問題。問題是如果你有McDonald's
行,如果你正在搜索一個字符串mcdonalds
它不會找到任何結果。有什麼建議麼?MySQL選擇帶特殊字符的字符串
我忘記提及我在WHERE
這句話中使用LIKE
。
我在從數據庫中選擇字符串時遇到問題。問題是如果你有McDonald's
行,如果你正在搜索一個字符串mcdonalds
它不會找到任何結果。有什麼建議麼?MySQL選擇帶特殊字符的字符串
我忘記提及我在WHERE
這句話中使用LIKE
。
如果您的搜索要求忽略某些字符,您可以在搜索過程中將它們刪除,空格爲replace
。
這個答案解決您的問題:
SELECT *
FROM restaurants
WHERE replace(name, '''', '') like '%mcdonalds%'; -- This will match "McDonald's"
僅供參考,一個單引號的文字('
)寫爲兩個單引號(''
),所以要指定一個單引號作爲參數傳遞給需要replace
連續四個報價(''''
) - 每個末端兩個,實際報價中間加倍報價。
轉義您的特殊字符。
SELECT *
FROM restaurants
WHERE name='McDonald\'s';
我相信你正在尋找LIKE操作:
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
編輯:
我想這個有很多不同的方式,我唯一的建議是使用任何代碼你可能會發送查詢以首先將'\'轉義添加到相應的字符。 PHP做這口井:
http://www.php.net/manual/en/function.mysql-real-escape-string.php
...但是這只是在形勢的完整的上下文猜測。
不明白downvote。 OP沒有說明他/她已經在使用like。用upvote補償。 –
它不是輸入問題,而是關於一個mysql函數。像TRIM功能,但刪除空間我想刪除一些特殊字符(') – Luka
搜索正確的術語。如果你搜索「喬」,你不會找到「簡」,那麼爲什麼會有驚喜? (另外,你應該永遠不會有太多的麥當勞連續。) –
你在找什麼?用'row ='mcdonalds''直接平等? – Dirk
我現在正在使用LIKE,但不能正常工作,因爲您可以看到。 LIKE row'%$ string%' – Luka