MySQL判断字符串是否是数字
采用REGEXP运算符{String} REGEXP '[^0-9.]'isNotNum : true 不是数字 , false 是数字,字符串中有空格也会被判断出来select ('123' REGEXP '[^0-9.]');-- 0 falseselect ('12.3' REGEXP '[^0-9.]');-- 0 falseselect ('123a' REGEXP '[^0-9.]')
·
采用REGEXP运算符
{String} REGEXP '[^0-9.]'
isNotNum : true 不是数字 , false 是数字,字符串中有空格也会被判断出来
select ('123' REGEXP '[^0-9.]'); -- 0 false
select ('12.3' REGEXP '[^0-9.]'); -- 0 false
select ('123a' REGEXP '[^0-9.]'); -- 1 true
我的业务需求:
某个字段上存储的是 单位(张,个…),由于同事存储的时候有些单位存储的是配置表中的单位编码,所以我需要手动的判断一下
IF (
( trim( a.STOCK_UNIT ) REGEXP '[^0-9.]' ),
a.STOCK_UNIT,
( SELECT x.ITEM_CNAME FROM iplat62.TEDCM01 x WHERE x.CODESET_CODE = 'mm.unit' AND x.ITEM_CODE = a.STOCK_UNIT )
) AS '单位',
自定义函数(未测试,网上找的)
DELIMITER $$
DROP FUNCTION IF EXISTS `IsNum` $$
CREATE FUNCTION `IsNum` (str VARCHAR(25)) RETURNS INT
BEGIN
DECLARE iResult INT DEFAULT 0;
IF ISNULL(str) THEN return 0; END IF;-- NULL 字符串
IF str = '' THEN return 0; END IF;-- 空字符串
SELECT str REGEXP '^[0-9]*$' INTO iResult;
IF iResult = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END $$
DELIMITER ;
关于 delimiter 的说明请查看文档 MySQL 中函数定义中 delimiter的说明
这个函数用来判断给定的字符串是否为函数, 用法示例:
select IsNum(‘12’); – 结果为 1
select IsNum(‘12-’); – 结果为 0
select IsNum(说明) from TABLE_XX
查询纯数字的记录
SELECT
name,
CAST( name AS UNSIGNED INTEGER ) AS val
FROM
student
WHERE
(name = "0" OR name > 0)
HAVING
CHAR_LENGTH(name) = CHAR_LENGTH( val );
更多推荐
已为社区贡献6条内容
所有评论(0)