mysql中判斷字段是否包含數字或者是否為純數字


 各種場景

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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM