2

我有一个包含数千个文本条目的 sqlite 数据库。文本有许多不可见/隐藏的回车符,它们在一长行中显示文本。它在某些程序上显示正常,而在其他程序上则不这样。如果我只是删除这些隐藏的回车并通过点击“输入”按钮替换它们,一切都会正常工作。我的问题是如何用正常的回车替换这些隐藏字符(我相信是 CHAR(13) 或 CHAR(10)),就像我按下回车键一样。正确的 SQLite 查询是什么?我发现了一些例子,只是用空白空间替换它们,但没有用普通段落替换。

这是我的意思的一个例子:

-英格兰羊毛产量增长的结果-围场是以前的农场,它们变成了放羊的牧场-在以前的农场土地上工作的农奴被驱逐了

这就是我希望它显示的内容:

  • 英格兰羊毛产量增长的结果
  • 围场是以前农场的土地,现在变成了放羊的牧场
  • 在以前的农田上劳作的农奴被驱逐了

我可以通过删除这些隐藏的回车并点击回车按钮来做到这一点。我可以为整个数据库执行此操作,但我需要大约 3 个月的时间才能完成此操作。

非常感激任何的帮助。

4

1 回答 1

3

“正常”换行符取决于应用程序。事实上,不同的操作系统使用不同的换行符。

首先,我会确保在您的数据库中对所有换行符进行规范化 - 我更喜欢单个LF( x'0A'),因此我会确保我的数据仅使用此字符:

 UPDATE mytable SET mycol=REPLACE(REPLACE(mycol, x'0D0A', x'0A'), x'0D', x'0A');

这会将所有转换CR+LFLF,它们都保留CRLF也。

然后根据我的应用程序的需要转换输出:

SELECT mycol FROM mytable; -- LF, Unix like systems, ...
SELECT REPLACE(mycol, x'0A', x'0D0A'); -- CRLF, Windows systems, ...
SELECT REPLACE(mycol, x'0A', x'0D'); -- CR, Mac OS (ver<=9), ...
于 2013-10-25T09:36:20.273 回答