0

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

4

4 回答 4

0

if you want to format via projection only, use SELECT, you will only need to use replace twice and no problem with that.

SELECT REPLACE(REPLACE(columnNAme, '-', ''), '+', '') 
FROM   tableName

otherwise, if you want to update the value permanently, use UPDATE

UPDATE tableName
SET    columnName = REPLACE(REPLACE(columnNAme, '-', ''), '+', '')
于 2012-12-26T11:34:37.227 回答
0

MySQL does not have a builtin function for pattern-matching and replace.

You'll be better off fetching the whole string back to your application, and then using a more flexible string-manipulation function on it. For instance, preg_replace() in PHP.

于 2012-12-26T11:34:44.497 回答
0

一种选择是使用mySql substring. (只要格式不变)

SELECT concat(SUBSTRING(pNo,2,2), SUBSTRING(pNo,5,3), SUBSTRING(pNo,9,7)); 
于 2012-12-26T11:24:31.813 回答
0

请尝试以下内容并发表评论。

Select dbo.Regex('\d+',pNo);

Select dbo.Regex('[0-9]+',pNo);

参考RUBLAR

所以 MYSQL 不像 Oracle,因此你可以只使用USer defined Function to get numbers. 这可以让你继续前进。

于 2012-12-26T11:36:58.233 回答