我在数据库表中有一个列名phone_number。现在存储在表中的数字是格式,如ex。+ 91-852-9689568。我想格式化它,只想要数字。 我怎么能在MySql中做到这一点?我已尝试使用像REGEXP这样的函数,但它显示错误,如函数不存在。我不想使用多个REPLACE。
答案 0 :(得分:0)
其中一个选项是使用mySql substring
。 (只要格式不变)
SELECT concat(SUBSTRING(pNo,2,2), SUBSTRING(pNo,5,3), SUBSTRING(pNo,9,7));
答案 1 :(得分:0)
如果您只想通过投影进行格式化,请使用SELECT
,您只需要使用替换两次,没有问题。
SELECT REPLACE(REPLACE(columnNAme, '-', ''), '+', '')
FROM tableName
否则,如果要永久更新值,请使用UPDATE
UPDATE tableName
SET columnName = REPLACE(REPLACE(columnNAme, '-', ''), '+', '')
答案 2 :(得分:0)
MySQL没有用于模式匹配和替换的内置函数。
最好将整个字符串提取回应用程序,然后在其上使用更灵活的字符串操作函数。例如,PHP中的preg_replace()。
答案 3 :(得分:0)
请尝试以下内容并发表评论。
Select dbo.Regex('\d+',pNo);
Select dbo.Regex('[0-9]+',pNo);
参考RUBLAR。
所以MYSQL不像Oracle,所以你可以使用USer defined Function to get numbers
。这可以让你前进。