我在数据库表中有一个列名称phone_number。现在存储在表中的数字格式类似于ex.+91-852-9689568。我想格式化它,只需要数字。我怎样才能在 MySql 中做到这一点?我已经尝试过使用像 REGEXP 这样的函数,但它显示错误,比如函数不存在。而且我不想使用多个 REPLACE。
4 回答
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, '-', ''), '+', '')
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.
一种选择是使用mySql substring
. (只要格式不变)
SELECT concat(SUBSTRING(pNo,2,2), SUBSTRING(pNo,5,3), SUBSTRING(pNo,9,7));
请尝试以下内容并发表评论。
Select dbo.Regex('\d+',pNo);
Select dbo.Regex('[0-9]+',pNo);
参考RUBLAR。
所以 MYSQL 不像 Oracle,因此你可以只使用USer defined Function to get numbers
. 这可以让你继续前进。