1. 程式人生 > 其它 >MySql 如何判斷字串是否為數字

MySql 如何判斷字串是否為數字

為什麼要判斷

大部分數字都是用int或者bigint儲存,但是也有部分欄位會用字串儲存數字,所以,當我們需要判斷字串格式是否全為數字的時候,就會遇到該問題了。
那麼,怎麼判斷呢?

方法

採用mysql的 REGEXP運算子
{String} REGEXP '[^0-9.]'
前面的字串是我們要做判斷的, 後面的字串是mysql的正則表示式,意思是 匹配不是數字或者小數點的字元。
如果String中含有不是0-9之間的數字或者是小數點時,返回true ,反之則返回false。

用法

select ('123a' REGEXP '[^0-9.]'); --‘123a'中含有字元'a' 輸出結果為1 mysql中常量true輸出為1 false輸出為0
select * from tablename where (name REGEXP '[^0-9.]') = 1 查詢name全為數字的記錄
注意:如果字串中有空格,也會匹配到正則表示式,返回1。如果是要去掉兩端的空格,就要將判斷的字串,就要對字串使用 trim()函數了。

為什麼要判斷

大部分數字都是用int或者bigint儲存,但是也有部分欄位會用字串儲存數字,所以,當我們需要判斷字串格式是否全為數字的時候,就會遇到該問題了。
那麼,怎麼判斷呢?

方法

採用mysql的 REGEXP運算子
{String} REGEXP '[^0-9.]'
前面的字串是我們要做判斷的, 後面的字串是mysql的正則表示式,意思是 匹配不是數字或者小數點的字元。
如果String中含有不是0-9之間的數字或者是小數點時,返回true ,反之則返回false。

用法

select ('123a' REGEXP '[^0-9.]'); --‘123a'中含有字元'a' 輸出結果為1 mysql中常量true輸出為1 false輸出為0
select * from tablename where (name REGEXP '[^0-9.]') = 1 查詢name全為數字的記錄
注意:如果字串中有空格,也會匹配到正則表示式,返回1。如果是要去掉兩端的空格,就要將判斷的字串,就要對字串使用 trim()函數了。