MySql:查询格式化数据库表中的特定列

时间:2012-12-26 11:19:18

标签: mysql sql

我在数据库表中有一个列名phone_number。现在存储在表中的数字是格式,如ex。+ 91-852-9689568。我想格式化它,只想要数字。 我怎么能在MySql中做到这一点?我已尝试使用像REGEXP这样的函数,但它显示错误,如函数不存在。我不想使用多个REPLACE。

4 个答案:

答案 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。这可以让你前进。