各種場景
1.判斷字段是否包含數字 [但是這個我實際執行沒有任何反應,百度也沒有收到,可是實際工作中確實看到數據庫中有人是這樣寫的,很奇怪]
name like '%[0-9]%';
2.使用like模糊查詢包含某個數字
select * from table where name like '%1%';
3.使用mysql原生函數FIND_IN_SET查詢包含某個數字
select * from table where find_in_set(1, 字段 );
FIND_IN_SET(str,strlist) str 要查詢的字符串 strlist 字段名 參數以”,”分隔 如 (1,2,6,8) 查詢字段(strlist)中包含(str)的結果,返回結果為null或記錄 假如字符串str在由N個子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間。
一個字符串列表就是一個由一些被 ‘,’ 符號分開的子鏈組成的字符串。如果第一個參數是一個常數字符串,
而第二個是type SET列,則FIND_IN_SET() 函數被優化,使用比特計算。 如果str不在strlist 或strlist 為空字符串,則返回值為 0 。
如任意一個參數為NULL,則返回值為 NULL。這個函數在第一個參數包含一個逗號(‘,’)時將無法正常運行。
注意:
select * from treenodes where FIND_IN_SET(id, '1,2,3,4,5');
使用find_in_set函數一次返回多條記錄
id 是一個表的字段,然后每條記錄分別是id等於1,2,3,4,5的時候
有點類似in (集合)
select * from treenodes where id in (1,2,3,4,5);
4.使用regexp正則匹配純數字
select * from table where (name regexp '[^0-9.]')=0;
當 SELECT “666” REGEXP ‘[^0-9.]’ 結果為 0 ,代表為純數字
當 SELECT “6hhhhh” REGEXP ‘[^0-9.]’ 時, 結果為1 ,代表不為純數字
5.使用regexp正則匹配字段值不包含數字
select * from table where 字段 not regexp '[0-9]+';
參考資料
https://blog.csdn.net/evasnowind/article/details/104511073/
