Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何替换MySQL中的非数字字符?_Mysql_Sql - Fatal编程技术网

如何替换MySQL中的非数字字符?

如何替换MySQL中的非数字字符?,mysql,sql,Mysql,Sql,我想替换MySQL中VARCHAR字段中的所有非数字字符,因为这是一个电话表,在导入它们时,我发现了几个不应该存在的“Fax:xxx”或“-”字符 我更喜欢不涉及多个REPLACE()调用的解决方案 提前感谢您的最佳选择可能是使用正则表达式替换UDF。我建议您看看,它有一个REGEX_REPLACE函数,可能适合您的需要 您的正则表达式可能如下所示: [^0-9] 这是一个mysql函数: delimiter // create function IF NOT EXISTS LeaveNum

我想替换MySQL中VARCHAR字段中的所有非数字字符,因为这是一个电话表,在导入它们时,我发现了几个不应该存在的“Fax:xxx”或“-”字符

我更喜欢不涉及多个REPLACE()调用的解决方案


提前感谢

您的最佳选择可能是使用正则表达式替换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的重命名:)我翻译成英语的变量。