我寫了一個查詢,用戶可以輸入一個字符串並從數據庫中獲取與該字符串相關的數據。MySQL字符串與通配符的比較
例如,用戶將輸入蘋果即使全名是蘋果公司
的代碼將被佈置爲使...
and Description like '%Apple%'
這裏的問題是,它將與蘋果一起返回Snapple。
除了刪除第一個「%」通配符並使用戶類型更多,我怎樣才能將結果限制在Apple?
我寫了一個查詢,用戶可以輸入一個字符串並從數據庫中獲取與該字符串相關的數據。MySQL字符串與通配符的比較
例如,用戶將輸入蘋果即使全名是蘋果公司
的代碼將被佈置爲使...
and Description like '%Apple%'
這裏的問題是,它將與蘋果一起返回Snapple。
除了刪除第一個「%」通配符並使用戶類型更多,我怎樣才能將結果限制在Apple?
首先支持的所有正則表達式運算符見documentation。您可能想要看看full-text searching。這基本上給你「谷歌般的」文本搜索功能。
要回答你的問題,在大多數情況下,對於術語「蘋果」,「Apple」比「Snapple」更適合。所以,你可以在搜索中加入「匹配質量」的概念 - 例如:
select *, 10 as MatchQuality
from table
where description like 'Apple'
union
select *, 5 as MatchQuality
from table
where description like 'Apple%'
union
select *, 1 as MatchQuality
from table
where description like '%Apple%'
爲什麼不,'AND Description ='Apple''? – majidarif
是的,我不理解這個問題。如果你不希望它匹配傳遞的字符串之前的字母,只需刪除第一個通配符%,就像你自己說的那樣。 – CashIsClay
描述不是Apple。這是蘋果公司,所以不會返回所追求的數據。我寧願保留通配符以防用戶錯誤。只是尋找其他建議,謝謝男孩! – nEWbie