2016-05-15 101 views
-1

例如: 我有1個單詞用於搜索數據。這個詞是'ayam'。SQL像查詢包含關鍵字的每個單詞

這是我的查詢:

select nama_product from product where nama_product like %a% 

它工作正常。但它顯示了我不想顯示的記錄。 這是結果:

  • 雄雞巴卡爾
  • daging雄雞
  • bayam希賈烏
  • 道恩bayam

第一和第二結果是好的。但是第三次​​也是最後一次,我不想被顯示。

,因爲我想證明「雄雞」不是「b'ayam'」

如何處理呢?我不知道它是否重複。因爲我已經搜索它,但我沒有找到。

回答

0

您可以使用regex僅匹配全字:

select nama_product 
    from product 
where nama_product regexp '(^|)ayam(|$)'; 
  • (^|)意味着這個詞必須是字符串的開始,或者必須用一個空格前面
  • ayam是我們匹配的詞
  • (|$)表示該詞必須後跟一個空格,或者該詞必須是該詞尾的結尾

SQL Fiddle

+0

太棒了。有用 !謝謝 –

-1

當u插入「%」意思(後)關鍵字之前的所有字符之前和之後,所以只是改變如何ü希望 例如不僅僅是關鍵字開始「天天報」:從產品 選擇nama_product其中nama_product像「天天報%」

另一個例子只是關鍵字‘雄雞’結束:從產品在那裏同樣nama_product 選擇nama_product‘%雄雞’

,之後看這裏我思你的答案就在這裏:

Match only entire words with LIKE?

1

不幸的是,這是SQL的限制。一些SQL數據庫具有高級文本搜索功能,例如允許非常特定文本結果的正則表達式。

對於您的情況,您可能需要執行多個LIKE條件。例如:

select nama_product 
from product 
where 
    nama_product like 'ayam %' 
    or nama_product like '% ayam %' 
    or nama_product like '% ayam' 
    or nama_product = 'ayam' 

請注意,如果文本字段非常大或者表很大,那麼依賴於LIKE運算符的查詢會變得非常緩慢。 LIKE不能很好地適應大型數據集。如果這是一個你認爲未來會變得非常大的數據集,那麼最好以不需要LIKE運算符的方式進行設計。

1

如果您需要搜索字詞'ayam'沒有任何前綴和sufix字符,您最好使用正則表達式。
例如,

SELECT namma_product FROM product WHERE namma_product REGEXP 'ayam' 

嘗試。這將工作

+0

這是行不通的。 – shmosel

+0

啓發我兄弟。 –

+0

試試吧,夥計。 – shmosel

相關問題