如何替换MySQL中的非数字字符?
我想替换MySQL中VARCHAR字段中的所有非数字字符,因为这是一个电话表,在导入它们时,我发现了几个不应该存在的“Fax:xxx”或“-”字符 我更喜欢不涉及多个REPLACE()调用的解决方案如何替换MySQL中的非数字字符?,mysql,sql,Mysql,Sql,我想替换MySQL中VARCHAR字段中的所有非数字字符,因为这是一个电话表,在导入它们时,我发现了几个不应该存在的“Fax:xxx”或“-”字符 我更喜欢不涉及多个REPLACE()调用的解决方案 提前感谢您的最佳选择可能是使用正则表达式替换UDF。我建议您看看,它有一个REGEX_REPLACE函数,可能适合您的需要 您的正则表达式可能如下所示: [^0-9] 这是一个mysql函数: delimiter // create function IF NOT EXISTS LeaveNum
提前感谢您的最佳选择可能是使用正则表达式替换UDF。我建议您看看,它有一个REGEX_REPLACE函数,可能适合您的需要 您的正则表达式可能如下所示:
[^0-9]
这是一个mysql函数:
delimiter //
create function IF NOT EXISTS LeaveNumber(str varchar(50)) returns varchar(50)
no sql
begin
declare verification varchar(50);
declare result varchar(50) default '';
declare character varchar(2);
declare i integer default 1;
if char_length(str) > 0 then
while(i <= char_length(str)) do
set character = substring(str,i,1);
set verification = find_in_set(character,'1,2,3,4,5,6,7,8,9,0');
if verification > 0 then
set result = concat(result,character);
end if;
set i = i + 1;
end while;
return result;
else
return '';
end if;
end //
delimiter ;
select leaveNumber('fAX:-12abcDE234'); -- RESULT: 12234
分隔符//
如果不存在,则创建函数LeaveNumber(str varchar(50))返回varchar(50)
无sql
开始
声明验证varchar(50);
声明结果varchar(50)默认值“”;
声明字符varchar(2);
声明i整数默认值为1;
如果字符长度(str)>0,则
而我当时是0
设置结果=concat(结果,字符);
如果结束;
设置i=i+1;
结束时;
返回结果;
其他的
返回“”;
如果结束;
结束//
定界符;
选择leaveNumber('fAX:-12abcDE234');--结果:12234
在您的更新查询中,将其用作本机mysql函数。您提供的链接已断开:(很高兴我的函数帮助了您。感谢您的升级投票。)只有葡萄牙语(?)变量名非常令人困惑,当您试图理解它是如何完成的:DIt是意大利语。我将尽快用英语重命名它们。:)啊哈,我总是很难分辨西班牙语、葡萄牙语和意大利语之间的区别:))Sry。。。和thx的重命名:)我翻译成英语的变量。