2012-12-06 50 views
0

看起來好像我的LIKE mySQL命令生成的結果比我想要的要多。我不明白爲什麼,我想知道是否有人可以幫助我理解爲什麼我的查詢不能按預期工作,從而幫助我實現目標。我從我的查詢中脫離了左邊的'%',這有點幫助了,但它仍然產生了很多我不需要的結果。MySQL:使用LIKE生成比我需要的結果更多的結果

例如:

User input ($searchword): 'ad' => returns[4]: 
        'Adele Necklaces, 
         Adwarrior Swords, 
         Affirmative T-shirt, 
         Agtec Radio' 

Trying to get THESE results for user input($searchword): 'ad' => returns[2]: 
                'Adelete Neckalces, 
                Adwarrior Swords' 

SQL命令:

("SELECT * FROM products WHERE prod_name LIKE '".$searchword."%'") 
+0

對於$ searchword左邊的%,這些結果是有意義的。我不認爲你把它在正確的地方刪除了。 – AndreKR

+0

Adelete Neckalces,Adwarrior Swords正是我期望從查詢中得到的結果。或者是你想要實現的結果? – Alex2php

+0

我不知道爲什麼搜索'ad%'會返回你顯示的最後兩個結果。你確定你正在修改你的搜索字符串嗎?你看過發送到數據庫的實際查詢運行情況,以確保它符合你的預期嗎? –

回答

0

我的朋友,我相信你是誤會了。 LIKE完全按照您的預期工作。

mysql> create table searchterms (term varchar(64), key(term)); 
Query OK, 0 rows affected (0.01 sec) 

mysql> insert into searchterms (term) values 
('Adele Necklaces'), ('Adwarrior Swords'), 
('Affirmative T-shirt'), ('Agtec Radio'); 
Query OK, 4 rows affected (0.00 sec) 
Records: 4 Duplicates: 0 Warnings: 0 

mysql> set @st='ad'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> set @st='ad'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> select * from searchterms where term like concat(@st, '%'); 
+------------------+ 
| term    | 
+------------------+ 
| Adele Necklaces | 
| Adwarrior Swords | 
+------------------+ 
2 rows in set (0.00 sec) 
+0

在我的情況下,它返回的結果超過2的原因是什麼?對我而言,前兩項結果與預期一致,此後,術語幾乎以'a'開始,然後第二個字母按字母順序排列...... – AnchovyLegend

+0

刪除左側的'%'將忽略搜索字符串左側的任何匹配。 – Kermit

+0

@MHZ你的模式是什麼樣的? – Kermit