提问者:小点点

是否可以在MySQL中仅从VARCHAR字段中选择数字字符而不使用自定义函数?


我正在将数据导入到第三方CRM中,并且对电话号码字段的限制比源数据库(MySQL)的限制更严格。我想抓取选择中的前10个数字字符。我没有整理现有数据的灵活性。我只能用那里的东西工作。到目前为止,我在论坛上所能找到的似乎都是创建一个自定义函数。自定义函数是唯一的方法吗?环境是MySQL5.7.19。

提前道谢!


共1个答案

匿名用户

在MySQL5.7中,我会这样做:

SELECT LEFT(mycolumn, 10)+0 FROM ...

内置函数LEFT()只使用前N个字符。

+0确保将其强制转换为数字,以防前N个字符包含一些非数字字符。在MySQL中转换为数值只是使用最左边的数字字符,当它到达非数字字符时,忽略其余的字符。

您可以先去掉连字符,然后使用上面显示的结果:

SELECT LEFT(REPLACE(mycolumn, '-', ''), 10)+0 FROM ...