您現在的位置是:首頁 > 運動
MySQL 使用 CONCAT 實現單表多欄位模糊查詢
資料結構串concat什麼意思
前段時間在開發一個 CRM 系統,在搜尋使用者資訊的時候遇到了問題,普通的 SQL 語句只能搜尋某一個欄位裡面的內容,如果要查詢多個欄位的內容,類似於全文搜尋,這時候就要用到CONCAT函數了。
CONCAT
CONCAT 函式使用方法:
CONCAT(str1,str2,…)
返回結果為連線引數產生的字串。如有任何一個引數為 NULL ,則返回值為 NULL。
注意
如果所有引數均為非二進位制字串,則結果為非二進位制字串。
如果自變數中含有任一二進位制字串,則結果為一個二進位制字串。
一個數字引數被轉化為與之相等的二進位制字串格式,若要避免這種情況,可使用顯式型別 cast 例如:
SELECT CONCAT(CAST(int_col AS CHAR), char_col)
CONCAT 函式在連線字串的時候,只要其中一個是 NULL,那麼將返回 NULL
模糊查詢
單表多欄位模糊查詢的是指實現在單表中對多欄位進行多個關鍵字的模糊查詢,但這數個關鍵字並不一定都存在於某個欄位。
例如現有 table 表,其中有 title、tag、description 三個欄位,分別記錄一條資料的標題、標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串透過空格分割為多個關鍵字,再在這三個欄位中查詢包含這些關鍵字的記錄。
可目前遇到的問題是,這些關鍵字是可能存在於三個欄位中的任意一個或者多個,但又要求三個欄位必須包含所有的關鍵詞。如果分別對每個欄位進行模糊匹配,是沒法實現所需的要求,由此想到兩種方法:
在插入記錄的同時,將需要進行MySQL單表多欄位模糊查詢的欄位合併成一個字串並加入到一個新的欄位中,然後對這個新欄位進行模糊查詢。
使用全文檢索,但是這需要用到中文分詞或者將漢字轉化為拼音(拆分漢字是不可行的,MySQL 預設 FT 最小位元組為 4),而且並不利於今後的維護。
因此 MySQL 單表多欄位模糊查詢可以透過下面這個SQL查詢實現:
SELECT * FROM `magazine` WHERE CONCAT(`title`,`tag`,`description`) LIKE ‘%關鍵字%’;
推薦文章
- 品質沙發,你的靠譜選擇——左右沙發
其創始人黃華坤先生於1986年開始製作沙發,帶領左右沙發從名不見經傳的小工廠發展為中高階傢俱前行者,致力於打造更高質量、更高顏值、更富有設計感的品質沙發產品,成為了眾多家庭的靠譜選擇...
- 衝牙器適合什麼人群使用?個護師揭秘四大騙局陷阱!
適合使用衝牙器的朋友也要選擇各項引數都經過專業技術調校的優質產品哦,因為毫無技術實力的劣質產品存在極大的傷牙隱患,千萬不能用...
- 王者榮耀:大部分射手你可以隨便玩,但這五個真的值得花時間練好
覺得馬可波羅值得練的理由很簡單,只要這個英雄不進行重做,那麼他永遠都可以在高分段得到很好的出場機會,因為對於射手來說,段位越高,大部分對局裡對射手更看重的就是自保能力,而他卻有兩段位移技能,同時還能出兩件肉裝,被動還可以打出真實傷害效果,學...