select 多欄位模糊查詢

2021-06-21 10:06:04 字數 926 閱讀 2194

(表名為user)

1) username=admin,password=000000

2) username=admin,password=123456

我們要實現的效果是可以輸入多個關鍵字查詢,多個關鍵字間以逗號分隔。

使用上述表舉例:輸入單個關鍵字「admin」可查出這兩條資料,輸入「admin,000000」只查出第一條資料,可實現的sql語句是:

select * from user where concat(username, password) like '%admin%';

select * from user where concat(username, password) like '%admin%' and concat(username, password) like '%000000%';

concat的作用是連線字串,但這樣有乙個問題:如果你輸入單個關鍵字「admin000000」也會查到第一條資料,這顯然不是我們想要的結果,解決方法是:由於使用逗號分隔多個關鍵字,說明逗號永遠不會成為關鍵字的一部分,所以我們在連線字串時把每個欄位以逗號分隔即可解決此問題,下面這個sql語句不會查詢到第一條資料:

select * from user where concat(username, ',', password) like '%admin000000%';

如果分隔符是空格或其他符號,修改 ',' 為 '分隔符' 即可。

總結:select * from 表名 where concat(欄位1, '分隔符', 欄位2, '分隔符', ...欄位n) like '%關鍵字1%' and concat(欄位1, '分隔符', 欄位2, '分隔符', ...欄位n) like '%關鍵字2%' ......;

mysql查詢多欄位 mysql多欄位模糊查詢

在最近的乙個專案需要實現在mysql單錶多關鍵字模糊查詢,但這數個關鍵字並不一定都存在於某個字段。例如現有table表,其中有title,tag,description三個字段,分別記錄一條資料的標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多個關鍵字,再在這三個欄位中查...

MYSQL 多欄位模糊查詢

mysql單錶多字段模糊查詢可以通過下面這個sql查詢實現 select from magazine where concat title,tag,description like 關鍵字 但是這樣有個問題,如果這三個欄位中有值為null,則返回的也是null,那麼這一條記錄可能就會被錯過,可以使用...

sql2005多欄位模糊查詢

create proc getlikesql colvalue varchar 30 asdeclare colcount int declare tbname varchar 50 declare sql varchar 8000 declare i int set i 1 select colc...