MySQL基础问题答疑:字符串提取数字与带逗号数值转换
MySQL问题解决方案
问题1:从'R1001'这类字符串中提取数字
错误原因
执行代码时提示table/view does not exist,是因为表名拼写错误:retailoutet应为retailoutlet(缺失字母l)。
解决方法
- 若字符串前缀固定为1个非数字字符,修正表名后原代码即可生效:
SELECT SUBSTR(roid, 2) AS numericroid FROM retailoutlet; - 若前缀长度不固定(如存在'AB123'这类格式),推荐用正则替换移除所有非数字字符,适配性更强:
SELECT REGEXP_REPLACE(roid, '[^0-9]', '') AS numericroid FROM retailoutlet;
问题2:将带逗号的数字字符串'2,50,000'转换为数值250000
错误原因
MySQL中不存在to_number()函数(该函数为Oracle等数据库专属语法),因此会触发“无效数字”错误。
解决方法
先移除字符串中的逗号,再转换为数值类型,可使用CAST()或CONVERT():
SELECT CAST(REPLACE('2,50,000', ',', '') AS UNSIGNED) AS num; -- 或使用CONVERT语法 SELECT CONVERT(REPLACE('2,50,000', ',', ''), UNSIGNED) AS num;
若需处理负数场景,将UNSIGNED替换为SIGNED即可。
内容的提问来源于stack exchange,提问作者Julius Caesar
相关产品推荐
相关产品推荐

