我需要从我的数据库中删除一些所有数字,一些特殊字符和文本的特定部分。我有一个脚本可以一次删除一个字符,但我想一次删除所有字符。
我需要删除的字符和文字如下所示: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.'\')';
}
如果需要,我可以发布整个脚本。
我尝试过使用多个替换语句,但是当我这样做时,它只会执行最后一个忽略第一个替换语句的替换语句。
答案 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', '')
. . .