【问题标题】:How to remove new line characters from data rows in mysql?如何从mysql中的数据行中删除换行符?
【发布时间】:2010-12-03 01:28:34
【问题描述】:

我可以遍历 php 脚本中的所有行并执行

UPDATE mytable SET title = "'.trim($row['title']).'" where id = "'.$row['id'].'";

trim 可以去掉\n

但我只是想知道是否可以在一个查询中完成相同的操作?

 update mytable SET title = TRIM(title, '\n') where 1=1

它会起作用吗?然后我可以直接执行这个查询而不需要循环!

谢谢

(PS:我可以测试它,但是表很大,不想弄乱数据,所以想想你以前是否测试过类似的东西)

【问题讨论】:

  • 你可以去掉 where 子句......不过要小心你的修剪,因为你可能在集合中还有其他字符(如回车'\r')
  • 在你问这个问题之前你应该已经测试过了。有用。如果你想在大表上测试,你可以使用 LIMIT 子句。
  • WHERE 子句有什么问题?只是好奇
  • @PhillPafford 没什么,从技术上讲,这只是多余的。 (我知道这是 > 5 岁,但可能会帮助其他人来阅读它。)

标签: mysql trim


【解决方案1】:

你的语法错误:

update mytable SET title = TRIM(TRAILING '\n' FROM title)

加法:

如果换行符在字段的开头:

update mytable SET title = TRIM(LEADING '\n' FROM title)

【讨论】:

  • 来自 MSSQL,这种语法对我来说很陌生。我以为你在使用伪代码!但它有效:)
  • TRIM() 上的文档供参考。
【解决方案2】:

玩上面的答案,这个对我有用

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')

【讨论】:

    【解决方案3】:

    换行符

    UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
    UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
    UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);
    

    对于所有空白字符

    UPDATE table_name SET field_name = TRIM(field_name);
    UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
    UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
    UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);
    UPDATE table_name SET field_name = TRIM(TRAILING '\t' FROM field_name);
    

    阅读更多: MySQL TRIM Function

    【讨论】:

      【解决方案4】:

      我的 2 美分。

      为了摆脱我的\n,我需要做一个\\n。希望对某人有所帮助。

      update mytable SET title = TRIM(TRAILING '\\n' FROM title)
      

      【讨论】:

        【解决方案5】:

        从 Excel 导入时删除尾随回车。当你执行这个时,你可能会收到一个没有 WHERE 的错误;忽略并执行。

        UPDATE table_name SET col_name = TRIM(TRAILING '\r' FROM col_name)
        

        【讨论】:

          【解决方案6】:

          update mytable set title=trim(replace(REPLACE(title,CHAR(13),''),CHAR(10),''));

          以上工作正常。

          【讨论】:

          • 这个在'\n'不工作时很有用(在mysql工作台上测试过)
          【解决方案7】:

          1) 将所有 换行tab 字符替换为空格。

          2) 删除所有前导和尾随空格。

           UPDATE mytable SET `title` = TRIM(REPLACE(REPLACE(REPLACE(`title`, '\n', ' '), '\r', ' '), '\t', ' '));
          

          【讨论】:

            【解决方案8】:
            UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', '');
            

            为我工作。

            虽然类似,但也会去掉\r\n

            http://lists.mysql.com/mysql/182689

            【讨论】:

            • 这不会删除尾随的\n,它会删除所有的\n,这里不需要。
            • 这可能不适用于确切的 OP,但确实帮助了我正在处理的问题,+1
            • 为我工作,谢谢。
            • 正是我需要的。
            【解决方案9】:
            UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));
            

            【讨论】:

            • 这不会删除尾随\n,它会删除所有\n,这在此处不需要。
            猜你喜欢
            • 2022-10-14
            • 1970-01-01
            • 1970-01-01
            • 2023-03-31
            • 1970-01-01
            • 2012-06-20
            • 2017-04-02
            • 1970-01-01
            • 2018-03-30
            相关资源
            最近更新 更多