【问题标题】:How to remove carriage returns in a text field in sqlite?如何在sqlite的文本字段中删除回车?
【发布时间】:2011-06-06 06:22:16
【问题描述】:

我有一个包含超过 40 万条记录的 sqlite 数据库。我刚刚发现某些文本字段中有回车符,我想将它们清除。我想复制原始表的结构,然后执行以下操作:

INSERT INTO large_table_copy 
SELECT date, other_fields, replace(dirty_text_field,XXX,"") 
FROM large_table

XXX 是回车的代码。不是\n。但我不知道它是什么。

【问题讨论】:

    标签: sqlite carriage-return


    【解决方案1】:

    SQLite 允许您在字符串文字中放置换行符,如下所示:

    SELECT replace(dirty_text_field, '
    ', '');
    

    如果您不喜欢这种语法,您可以将字符串作为BLOB 传递:X'0D' 用于\rX'0A' 用于\n(假设默认的UTF-8 编码)。

    编辑:由于这个答案最初是写的,SQLite 添加了一个CHAR 函数。因此,您现在可以为\r 编写CHAR(13) 或为\n 编写CHAR(10),无论您的数据库是用UTF-8 还是UTF-16 编码的,都可以使用。

    【讨论】:

    • 对于不清楚这一点的任何人...您可以执行SELECT replace(dirty_text_field, X'0A', '\n')... 之类的操作,将单个 \n 字符替换为等效的 "\n" 2 字符字符串
    • @MarkCarter 这是一个很好的答案,那么为什么不发布它的答案而不仅仅是评论呢?
    • @aculich 因为它没有提供答案中提供的任何根本上的新内容
    • 我认为现在这行不通。 sqlite> SELECT replace(whitelist.wl_date, CHAR(13), ''); 导致 Error: no such column: whitelist.wl_date。我尝试使用数据库名称作为前缀,并省略表名。
    【解决方案2】:

    来自@MarkCarter 对上述问题的评论:

    SELECT replace(dirty_text_field, X'0A', '\n');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2015-01-09
      • 2017-01-26
      相关资源
      最近更新 更多