0

データベースからすべての数字、特殊文字、テキストの特定の部分を削除する必要があります。一度に 1 文字ずつ削除できるスクリプトがありますが、一度にすべての文字を削除したいと考えています。

削除する必要がある文字とテキストは次のようになります: 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 に答える