2011-07-06 67 views
2

我在從數據庫中選擇字符串時遇到問題。問題是如果你有McDonald's行,如果你正在搜索一個字符串mcdonalds它不會找到任何結果。有什麼建議麼?MySQL選擇帶特殊字符的字符串

我忘記提及我在WHERE這句話中使用LIKE

+1

搜索正確的術語。如果你搜索「喬」,你不會找到「簡」,那麼爲什麼會有驚喜? (另外,你應該永遠不會有太多的麥當勞連續。) –

+0

你在找什麼?用'row ='mcdonalds''直接平等? – Dirk

+0

我現在正在使用LIKE,但不能正常工作,因爲您可以看到。 LIKE row'%$ string%' – Luka

回答

6

如果您的搜索要求忽略某些字符,您可以在搜索過程中將它們刪除,空格爲replace

這個答案解決您的問題:

SELECT * 
FROM restaurants 
WHERE replace(name, '''', '') like '%mcdonalds%'; -- This will match "McDonald's" 

僅供參考,一個單引號的文字(')寫爲兩個單引號(''),所以要指定一個單引號作爲參數傳遞給需要replace連續四個報價('''') - 每個末端兩個,實際報價中間加倍報價。

0

轉義您的特殊字符。

SELECT * 
FROM restaurants 
WHERE name='McDonald\'s'; 
0

我相信你正在尋找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

...但是這只是在形勢的完整的上下文猜測。

+1

不明白downvote。 OP沒有說明他/她已經在使用like。用upvote補償。 –

+0

它不是輸入問題,而是關於一個mysql函數。像TRIM功能,但刪除空間我想刪除一些特殊字符(') – Luka