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

标签 sql sqlite

我有一个包含数千个文本条目的 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+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), ...
    

    关于sqlite 查询用合法的回车替换隐藏/不可见的回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19580314/

    相关文章:

    php - 在 SQL 语句中使用 '

    mysql - SQL 输出不是预期的。我究竟做错了什么?

    android - 从 Spinner 中的 SQLite 加载数据

    r - R中的SQLite中的表中的Collect()

    android - 无法访问预加载的 SQLite 数据库文件

    ios - 单独在 Swift 中创建自定义 sqlite 函数

    java - 如何监控数据库的变化?

    mysql - 从列和 GROUP BY 中获取 AVG 的 SQL 查询

    sqlite shell 报告 CPU 时间 : what are the units?

    mysql - HIVE 或 SQL 查询用于比较相同样本量的售前和售后