判断一个字符是否是数字
需求描述
需求:将临时表里判断data字段里哪些是数字.
解决方法:这里通过函数isnumberic或者regexp完成该效果.
注: 数据库数据集SQL脚本详见如下链接地址
员工表结构和数据初始化SQL脚本
SQL代码
-- Mysql:
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 ;
-- 或者使用正则表达式:
SELECT data FROM
(
SELECT '63' AS data
UNION ALL
SELECT '36(' AS data
UNION ALL
SELECT '3(6' AS data
UNION ALL
SELECT '(36' AS data
UNION ALL
SELECT '36$' AS data
UNION ALL
SELECT '' AS data
UNION ALL
SELECT NULL AS data
)A
-- WHERE IsNum(data) = 1
WHERE data REGEXP '^[0-9]*$' = 1 AND data IS NOT NULL AND data <> '';
-- 或者直接通过函数IsNum(data) = 1来判断,见注释部分.
Sql Server:
SELECT data FROM
(
SELECT '63' AS data
UNION ALL
SELECT '36(' AS data
UNION ALL
SELECT '3(6' AS data
UNION ALL
SELECT '(36' AS data
UNION ALL
SELECT '36$' AS data
UNION ALL
SELECT '' AS data
UNION ALL
SELECT NULL AS data
)A
WHERE ISNUMERIC(data) = 1