2 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
表名為user)
1) username=admin,password=000000
2) username=admin,password=123456
我們要實(shí)現(xiàn)的效果是可以輸入多個(gè)關(guān)鍵字查詢,多個(gè)關(guān)鍵字間以逗號(hào)分隔。
使用上述表舉例:輸入單個(gè)關(guān)鍵字“admin”可查出這兩條數(shù)據(jù),輸入“admin,000000”只查出第一條數(shù)據(jù),可實(shí)現(xiàn)的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的作用是連接字符串,但這樣有一個(gè)問題:如果你輸入單個(gè)關(guān)鍵字“admin000000”也會(huì)查到第一條數(shù)據(jù),這顯然不是我們想要的結(jié)果,解決方法是:由于使用逗號(hào)分隔多個(gè)關(guān)鍵字,說明逗號(hào)永遠(yuǎn)不會(huì)成為關(guān)鍵字的一部分,所以我們?cè)谶B接字符串時(shí)把每個(gè)字段以逗號(hào)分隔即可解決此問題,下面這個(gè)sql語句不會(huì)查詢到第一條數(shù)據(jù):
select * from user where concat(username, ',', password) like '%admin000000%';
如果分隔符是空格或其他符號(hào),修改 ',' 為 '分隔符' 即可。
總結(jié):
select * from 表名 where concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%關(guān)鍵字1%' and concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%關(guān)鍵字2%' ......;

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
你寫的理論上是可以的
但是你存儲(chǔ)的是中文寫法的逗號(hào)
但你like的是英文寫法的逗號(hào),有可能是這個(gè)問題造成的吧
你檢查下你的輸入法
還有l(wèi)ike的單引號(hào)貌似也不對(duì)吧
- 2 回答
- 0 關(guān)注
- 619 瀏覽
添加回答
舉報(bào)