0

在将一些应用程序从 PHP 和 Delphi 迁移到 Java-RS 的过程中,一些列条目此时正在破坏演出。

在使用 JPA 从 mySQL 读取数据到 Java Pojos 之后,使用 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 查询看起来如何?

假设有问题的列是“客户”表中的“名称”

对于问题 #1,我发现: SELECT name from customer where hex(name) like "%00";

去工作。对于问题 #2,我假设使用左子字符串的更新可能有效。在这种情况下,我不确定长度。看起来 length(name) 将返回包括终止零字符的长度。在这种情况下,left(length(name)-1) 的更新会正常工作吗?

我不确定数据库的备份和恢复是否会保持当前有些损坏的数据库的形状。因此,了解如何使用故意创建空终止字符串的插入语句来重现这种情况也会很有帮助。

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 回答