我有一个包含数千个文本条目的sqlite数据库。该文本有许多不可见/隐藏的回车符,它在一个长行中显示文本。它在某些程序上显示正常,而在其他程序上它不喜欢这样。如果我只是删除这些隐藏的回车并通过点击“输入”按钮替换它们,一切正常。我的问题是如何用正常的回车替换这些隐藏的字符(我认为是CHAR(13)或CHAR(10)),就像我按下回车键。正确的SQLite查询是什么?我已经找到了一些关于用空格替换它们的例子,但没有关于用普通段落替换它们。
这是我的意思的一个例子:
- 来自英格兰羊毛生产增长的结果 - 围栏是以前农场的土地,它们变成了羊牧场 - 曾经在以前的农田上工作的农奴被驱逐
这是我希望它显示的内容:
我可以通过删除这些隐藏的回车并按下回车按钮来完成此操作。我可以为整个数据库执行此操作,但这需要我大约3个月的时间。
任何帮助都将非常感激。
答案 0 :(得分:3)
“正常”换行取决于应用。实际上,不同的操作系统使用不同的换行符。
首先,我会确保在您的数据库中规范化所有换行符 - 我更喜欢单个LF
(x'0A'
),因此我会确保我的数据仅使用此字符:
UPDATE mytable SET mycol=REPLACE(REPLACE(mycol, x'0D0A', x'0A'), x'0D', x'0A');
这会将所有CR+LF
转换为LF
,并将所有CR
转换为LF
。
然后根据我的应用程序转换输出:
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), ...