转自:https://blog.csdn.net/weixin_35385409/article/details/113141030
原代码中没有判断小数点.,我增加了小数点的判断
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;-- 空字符串
IF LOCATE('.',str,LOCATE('.',str)+1) > 1 THEN return 0; END IF;
-- 多个小数点
SELECT str REGEXP '^[0-9.]*$' INTO iResult; -- 包含了除0-9和小数点以外的字符
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('12.0.1'); -- 结果为 0
select IsNum(说明) from TABLE_XX