1

PHPスクリプトのエラーにより、実際のNULL値ではなく文字列「Null」として多くの値が入力されたデータベースがあります。各列を検索する代わりに、テーブル内のすべての 'Null' 文字列を見つけて NULL に置き換える方法はありますか?

4

3 に答える 3

1

次のように単純にする必要があります。

UPDATE tableName
SET columnName = NULL
WHERE columnName = 'Null'
于 2013-09-20T01:41:38.223 に答える
1

update1つまたは複数の列でそれを行いたい場合:

UPDATE t
    SET col1 = (case when col1 = 'NULL' then NULL else col1 end),
        col2 = (case when col2 = 'NULL' then NULL else col2 end),
        ... ;

多数の列があり、すべてのコードを記述したくない場合は、次のようなクエリを実行できます。

select replace('XXX = (case when XXX = \'NULL\' then NULL else XXX end),',
               'XXX', column_name)
from information_schema.columns
where table_name = YOURTABLENAME ;
于 2013-09-20T03:02:54.200 に答える
0

「各列を検索する代わりに」とはどういう意味かわかりません。多くの列があり、@ john-conde が提案するようにクエリを何度も実行したくない場合は、次を使用してデータベースをプレーンテキストファイルにダンプすることもできます

 mysqldump -u<user> -p<password> --database <dbname> > dbdump.sql

これにより、データベースがプレーンテキストとしてファイルにダンプされますdbdump.sql。で使い慣れた検索/置換手法 (sed、awk、perl、vi など) を使用できますdbdump.sql。何をどこで交換するかについては特に注意する必要があります。重要な文字列のみを置換していることを確認する必要があります。それができたら、次のようにダンプを mysql にロードし直すことができます。

mysql -u<user> -p<password> <dbname> < dbdump.sql

一度に 1 つのテーブルをダンプすることもできます -> それを修正します -> それをロードし直します。

本番環境でこれを行う場合、この操作の実行中にデータベースへの書き込みが発生しないように、特別な予防措置が必要です。mysqldumpデータベースの一貫したスナップショットをダンプするのに役立つコマンド ラインで他のいくつかのオプションを使用します。

于 2013-09-20T03:32:21.153 に答える