MySQL中提供了一個函數(shù)叫做isnumber,作用是判斷一個字符串是否為數(shù)字。
SELECT isnumber('12345'); -- 返回1,說明字符串是數(shù)字 SELECT isnumber('12.34'); -- 返回1,說明字符串是數(shù)字 SELECT isnumber('1a2b3c'); -- 返回0,說明字符串不是數(shù)字
從上面的例子可以看出,isnumber函數(shù)會自動把字符串轉(zhuǎn)換成數(shù)字,并返回一個布爾值(1代表是數(shù)字,0代表不是數(shù)字)。
isnumber函數(shù)可以很方便地用于數(shù)據(jù)驗證和類型轉(zhuǎn)換。比如:
SELECT IF(isnumber('12345'), CAST('12345' AS UNSIGNED), 0); -- 如果字符串是數(shù)字,則轉(zhuǎn)換成無符號整數(shù),否則返回0
需要注意的是,isnumber函數(shù)只能判斷基本的數(shù)字類型,比如整數(shù)和浮點(diǎn)數(shù),而不能判斷復(fù)雜的數(shù)字類型,比如十六進(jìn)制和科學(xué)計數(shù)法。