0

一部のアプリケーションをPHPおよびDelphiからJava-RSに移行する過程で、現時点で一部の列エントリがショーを台無しにしています。

jPAを使用してmySQLからJavaPojoにデータを読み取り、JaxBを使用して結果をXMLに変換し、結果をJQuery / jqGridに読み戻そうとすると、エラーが発生します。

ブラウザでは、問題は単に「整形式ではない」と表示されます。Eclipse XMLエディターで詳細を見ると、エラーメッセージが表示されます。

An invalid XML character (Unicode 0x0) was found in the element content of the document

ここで、元のデータを処理して修正したいと思います。

  1. 無効なエントリを持つ行を検索するSQLクエリはどのようになりますか?
  2. これらの行を修正するSQLクエリはどのようになりますか?

問題のある列がテーブル「Customer」の「name」であると仮定します。

質問1の場合:SELECT name from customer where hex(name)like "%00";

働くために。質問2については、左の部分文字列を使用した更新が機能する可能性があると想定しています。この場合の長さはわかりません。length(name)は、終了ゼロ文字を含む長さを返すようです。この場合、left(length(name)-1)による更新は正しく機能しますか?

データベースのバックアップと復元によって、現在の多少破損したデータベースの状態が維持されるかどうかはわかりません。したがって、意図的にnullで終了する文字列を作成する挿入ステートメントを使用して状況を再現する方法を知ることも役立ちます。

4

2 に答える 2

2

HEX()私はあなたが次のようなもので変換できるはずだと思います

UPDATE customer SET name=UNHEX(REPLACE(HEX(name), '00', ''));

または単に

UPDATE customer SET name=REPLACE(name, CHAR(0), '');
于 2013-02-02T18:02:47.350 に答える
0
update customer set name=left(name,length(name)-1) where hex(name) like "%00";
于 2013-02-02T17:46:53.767 に答える