sqlite查询替换隐藏/不可见的回车与合法的回车

sqlite查询替换隐藏/不可见的回车与合法的回车

问题描述:

我有一个sqlite数据库数以千计的文字条目。该文本有很多不可见/隐藏的回车,它显示了一个长行中的文本。它在某些程序上显示正常,而在其他程序上则不显示。如果我只是删除这些隐藏的回车并通过点击'回车'按钮来替换它们,一切正常。我的问题是如何用正常的回车替换这些隐藏的字符(我相信是CHAR(13)或CHAR(10)),就像我点击回车按钮一样。什么是正确的SQLite查询?我找到了一些关于用空白空间替换它们的例子,但是没有用正常段落替换它们的例子。sqlite查询替换隐藏/不可见的回车与合法的回车

这里是我的意思的例子:

从羊毛产量England-机箱增长-Result是这在以前是农场的土地,他们都变成了牧场的sheep-谁一直在研究的农奴以前的农田被拆迁户

这是我想它显示的内容:

  • 在英国从羊毛产量增长的结果
  • 外壳是土地这在以前是农场,他们都变成了牧场的羊
  • 谁一直在努力以前的农场土地上的农奴evictedd

我可以只是去和删除这些隐藏的回车和击中做到这一点输入按钮。我可以为整个数据库做到这一点,但这需要大约3个月的时间。

任何帮助将不胜感激。

+0

炭灰的13个10不隐藏回车。他们是你价值观中的宝贵人物。将它们保存在你的数据库中,并在你用来显示它们的任何应用程序代码中处理它们。 –

+0

那么,当我在sqlite编辑器中点击“输入”按钮时会发生什么?这照顾到了这个问题。我只需要用那个替换那些。 –

+0

您需要找出实际使用的控制字符。运行'SELECT hex(TheColumn)FROM TheTable WHERE ID = 42'。 –

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

我想,第一,获得一定有所有线路在数据库中打破了规范化 - 我更喜欢一个LFx'0A'),所以我想确保我的数据只使用了这种性格:

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

这将全部CR+LF转换为LF,它们全部保留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), ... 
+0

这工作。谢谢。 –