0

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

我需要删除的字符和文本如下所示: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.'\')';
            }

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

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

4

1 回答 1

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', '')

. . .
于 2012-09-10T14:32:10.630 回答