如果字符串以数字开头,然后包含非数字字符,则可以使用该
CAST()函数,或者通过添加一个将其隐式转换为数字
0:
SELECT CAST('1234abc' AS UNSIGNED); -- 1234SELECT '1234abc'+0; -- 1234要从 任意
字符串中提取数字,您可以添加一个自定义函数,如下所示:
DELIMITER $$CREATE FUNCTION `ExtractNumber`(in_string VARCHAr(50)) RETURNS INTNO SQLBEGIN DECLARE ctrNumber VARCHAr(50); DECLARE finNumber VARCHAr(50) DEFAULT ''; DECLARE sChar VARCHAr(1); DECLARE inti INTEGER DEFAULT 1; IF LENGTH(in_string) > 0 THEN WHILE(inti <= LENGTH(in_string)) DO SET sChar = SUBSTRINg(in_string, inti, 1); SET ctrNumber = FIND_IN_SET(sChar, '0,1,2,3,4,5,6,7,8,9'); IF ctrNumber > 0 THEN SET finNumber = CONCAt(finNumber, sChar); END IF; SET inti = inti + 1; END WHILE; RETURN CAST(finNumber AS UNSIGNED); ELSE RETURN 0; END IF; END$$DELIMITER ;
定义函数后,您可以在查询中使用它:
SELECT ExtractNumber("abc1234def") AS number; -- 1234


