【问题标题】:Is there a way to trim several characters (disregarding their combination) in MySQL?有没有办法在 MySQL 中修剪几个字符(不管它们的组合)?
【发布时间】:2013-09-15 06:03:35
【问题描述】:

我想从 MySQL 中的字符串中删除前导和尾随空格(SP、\n、\t,最终是 \r)。数据已经在 MySQL 表上,我无法检索它们以在 PHP 中进行处理,因为这应该太慢了。

我试过这种语法:

UPDATE table set field = TRIM(BOTH '\t' FROM TRIM(BOTH '\n' FROM TRIM(field)));

但是,这种方式删除了spaces, then\n, then\tin this order, and I want to remove all spaces disregarding their order (ie:"\n\t \t\n\n\t hello\t\n\n \t "would return only"hello" `。

我想我需要创建一个函数(CREATE FUNCTION MY_TRIM...),但在做这样的工作之前,我想知道是否有更简单的方法。

【问题讨论】:

  • 你为什么不尝试替换功能。

标签: mysql trim


【解决方案1】:

为什么不简单地使用替换

例如

update table set field = replace(replace(replace(field,"\t",""),"\n","")," ","")

【讨论】:

  • 我只想删除前导和尾随空格,抱歉我的问题不清楚。
【解决方案2】:

你可以试试这个:

    UPDATE table SET `field`=TRIM(BOTH '\t' OR '\n' FROM TRIM(BOTH '\n' OR '\t' FROM TRIM(field))); 

【讨论】:

  • 刚试过select TRIM(BOTH '\t' OR '\n' OR ' ' FROM '\n\t \t\nhello\n\t \t\n');,看起来不行(即使OR的语法看起来很有趣)。
  • 其实'a' or 'b'被认为是一个表达式;所以select trim(both 'a' or 'b' from 'aaxbb0'); 返回aaxbb。还是不错的尝试。
【解决方案3】:

这对我有用: REPLACE(REPLACE(FileName, '\r', ''), '\n', '')

【讨论】:

    猜你喜欢
    • 2017-06-23
    • 2021-07-22
    • 2015-09-25
    • 1970-01-01
    • 2016-01-07
    • 2011-10-14
    • 2015-12-12
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多