多个替换语句可替代替换特定字符

时间:2012-09-10 14:16:00

标签: php mysql

我需要从我的数据库中删除一些所有数字,一些特殊字符和文本的特定部分。我有一个脚本可以一次删除一个字符,但我想一次删除所有字符。

我需要删除的字符和文字如下所示:Dollar,Sterling,Page,。p,〜,.然后是数字1-9

例如:我现在有一个条目,如下所示:这是一本很棒的书,595页.p 595,仅售54.95美元

我需要更新它,因此它看起来像这样:这是一本好书,而且只是成本。

以下是我使用的替换功能的代码段。我想使用这个设置,因为我希望它与脚本的其余部分一起使用。 $ table是名称,$ field是列名,$ search是需要替换的值,$ replace是要替换的值(在我的情况下为空白)

if($typeOK) { 
            // CREATE UNIQUE HANDLE FOR update_sql_array
            $handle = $table.'_'.$field;
            if($queryType=='replace') {
                $sql[$handle]['sql'] = 'UPDATE '.$table.' SET '.$field.' = REPLACE('.$field.',\''.$search.'\',\''.$replace.'\')';
            } elseif($queryType=='') {
                $sql[$handle]['sql'] = 'UPDATE '.$table.' SET '.$field.' = REPLACE('.$field.',\''.$keyword1.'\',\''.$replace1.'\')';
            }

如果需要,我可以发布整个脚本。

我尝试过使用多个替换语句,但是当我这样做时,它只会执行最后一个忽略第一个替换语句的替换语句。

1 个答案:

答案 0 :(得分:0)

有些数据库支持一个名为TRANSLATE的函数,但不幸的是,MySQL并不是其中之一。您可以使用嵌套替换来执行此操作:

set field = replace(replace(replace( . . . (field, '0', ''), '1', '') . . . , '9', '')

不优雅,但有效。

“...”旨在显示要替换的其他调用,如以下顺序:

set field = replace(field, '0', '')

set field = replace(replace(field, '0', ''), '1', '')

set field = replace(replace(replace(field, '0', ''), '1', ''), '2', '')

. . .