2013-07-21 84 views
0

我已經通過「LOAD DATA INFILE」在MySQL中導入了一個.txt數據庫,並且一切似乎都正常,唯一的問題是如果我用下面的數據庫搜索一條記錄查詢:MySQL「LIKE」搜索不起作用

"SELECT * FROM hobby WHERE name LIKE 'Beading'" 

返回0行,而如果我用

""SELECT * FROM hobby WHERE name LIKE '%Beading%'" 

返回1行,即使存在與名稱=卷邊的一個記錄。有人知道它有什麼依賴嗎?

回答

1

第一個行不通的,因爲像statment你應該使用'%search word%'

你應該使用這個

 "SELECT * FROM hobby WHERE name LIKE '% Beading %' or name LIKE '% Beading' 
     or name LIKE 'Beading %' or name LIKE 'Beading'" 
+0

我知道,但我需要知道,如果在那裏搜索的單詞是在DB上,而%字%我只知道有類似的單詞[email protected]_Me –

+0

我不明白你的意思,但是這將返回具有這種卷邊 –

+0

是的,我知道這將返回其全卷邊的所有名稱的名字,但我只需要一個單詞卷邊 –

2

當使用SQL LIKE

您應該使用通配符標識符,如(或不):

  1. '%word' - retu結果是該值以字母「word」結尾。
  2. 'word%' - 以字母「word」開頭的reurn結果。
  3. %word% - 返回結果,包括字母:「單詞」的任何地方。
  4. 有像一些更模式搜索組合:

    'ABC' LIKE 'ABC' 真

    'ABC' LIKE '一%' 真

    'ABC' LIKE'b 「真

    'ABC' LIKE 'C' 假

如果你想你應該使用的精確匹配:

"SELECT * FROM hobby WHERE name='Beading'" 

LIKE 'Beading'也要工作,所以它可能是一個空間問題,或區分大小寫porblem。

當你想確保你的結果是完整的,你需要照顧整理情況(敏感性)。

說你的表是UTF ... CS和你想的不敏感的情況下,搜索你應該聲明它在你的SQL查詢,例如:

SELECT * FROM hobby WHERE name COLLATE UTF8_GENERAL_CI LIKE 'beading' 

嘗試測試不同的方法,看看有什麼適合你目標最好。