0

フロントエンド ソフトウェアが無効な文字の入力を許可しているデータベースを使用しています。(私は、ソフトウェアの制御または再書き込みを行いません。)

文字の種類は、キャリッジ リターン、改行、�、¶ です。基本的に、0 ~ 9、az、または標準の句読点以外の文字は、データベースとデータの使用方法に問題を引き起こします。

データベース全体をスキャンしてこれらの無効なコードを特定し、それらを結果として表示するか削除する方法を探していますか?

このサイトを見ていたのですが、ある範囲で検索する方法はないのでしょうか?しかし、私は間違った木を吠えているかもしれません.

私はSQLにかなり慣れていないので、優しくしてください、ありがとう。

4

2 に答える 2

0

あなたが言うので

その後、データはこれらの文字を処理できない 2 番目のプログラムに移動し、これによりプロセスが失敗します。

読み取れないデータをそのままにして、2番目のプロセスが失敗した場合にのみ入力される変更されたデータ用の新しい列を作成できるかどうか疑問に思っています。エラーが発生したセルのデータのすべての文字をテストする必要がありますが、すべての行のすべての文字をテストする必要はありません。処理する更新されたテキストを決定したら、更新された値を使用して 2 番目のプロセスを再度呼び出すことができます。

于 2013-05-23T16:52:33.080 に答える
0

これを行う唯一の方法は、システム テーブルを使用して問題のデータベース/スキーマ内のすべてのフィールドのリストを取得するストアド プロシージャを作成することです。システム テーブルを除外して (またはユーザー定義のテーブルのみを含めて)、システム テーブルの問い合わせで見つかった列/テーブルに基づいて SQL 更新ステートメントを動的に書き出します。この記事のように正規表現または文字削除を使用する

問題のシステム テーブルは次のとおりです。

SELECT
 table_name,column_name
FROM
 information_schema.columns

疑似コードは次のようになります。

Get list of tables we want to do this for
For each table in list
get list of columns for table that have string data.
For each column in table
generate update statement to strip unwanted characters
--Consider writing out table, column key, before after values to history table. incase this 
has to be undone.
--Consider counter so I have an idea of what was updated
execute updatestatement
next column
next table
write out counter
于 2013-05-23T16:39:18.777 に答える