我有一个包含数千个文本条目的 sqlite 数据库。文本有许多不可见/隐藏的回车,在一行中显示文本。它在某些程序上显示正常,而在其他程序上则不一样。如果我只是删除这些隐藏的回车并通过点击“输入”按钮来替换它们,那么一切正常。我的问题是如何用正常的回车替换这些隐藏字符(我认为是 CHAR(13) 或 CHAR(10)),就像我按下 Enter 按钮一样。正确的 SQLite 查询是什么?我发现了一些关于只是用空白替换它们的例子,但没有关于用普通段落替换的例子。
这是我的意思的一个例子:
- 英格兰羊毛产量增长的结果 - 围栏是以前农场的土地,现在变成了羊的牧场 - 在以前的农场土地上工作的农奴被驱逐
这是我希望它显示的内容:
我可以通过删除这些隐藏的回车并点击回车按钮来做到这一点。我可以对整个数据库执行此操作,但我需要大约 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), ...
关于sqlite 查询用合法的回车替换隐藏/不可见的回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19580314/