2014-01-22 43 views
1

我需要搜索整個單詞不是他們使用SQL LIKE來匹配完整的單詞

$q = $_GET['q']; 
SELECT * FROM table WHERE column LIKE '% $q %' 

的一部分。例如,如果$q = mag它不應該找雜誌 我已經試過了用戶發佈的解決方案,但它沒「科技工作

像正則表達式和CONCAT

PS:我的數據庫列是一個大的文本

+0

MATCH()只適用於myiasm數據庫類型,雖然沒有 – Dave

回答

1

我不知道這是否會解決您的問題,或者你已經嘗試過,但給它一個嘗試, 查找單詞邊界具有以下REGEXP

SELECT * FROM table WHERE column RLIKE "[[:<:]]$q[[:>:]]"; 
+0

它在我的查詢返回任何 –

+0

,你可以做一個事情。你可以打印查詢,並直接在phpMyAdmin –

+0

我沒有運行..它曾在第一 –

0

不要使用LIKE ...在這種情況下僅使用比較。事情是這樣的:

SELECT * FROM table WHERE column = '$q'; 
+1

,OP想要那個'「富barbaz b AZ巴茲「'將爲'發現」「',而不是'」欄「',所以它不是平等 –

+0

但用戶說,當'$ Q ='mag''然後抓取行包含'mag'而不是'magazine'。只是作爲'magazine'這個簡單的查詢會給輸出。 @AlmaDo ..可能是我誤會了...不知道 –

+0

'$ q'我得到它從URL用戶在文本框寫整個單詞不是它的一部分@Butterfruit –

0

如果你的話用空格分開,然後加兩側空間:

SELECT * 
FROM table 
WHERE concat(' ', column, ' ') LIKE '% $q %';