当前位置:  开发笔记 > 后端 > 正文

MySQL:如何从字符串中删除两个或多个空格?

如何解决《MySQL:如何从字符串中删除两个或多个空格?》经验,为你挑选了5个好方法。

我找不到MySQL的这个问题,所以这里是:

我需要将字符串中的所有双倍或更多空格修剪为1个单独空格.

例如:"快速布朗狐狸"应该是:"快速布朗狐狸"

函数REPLACE(str,"","")只删除双空格,但是当有更多空格时会留下多个空格...



1> 小智..:

最短,最令人惊讶的最快解决方案:

CREATE FUNCTION clean_spaces(str VARCHAR(255)) RETURNS VARCHAR(255)
BEGIN
    while instr(str, '  ') > 0 do
        set str := replace(str, '  ', ' ');
    end while;
    return trim(str);
END



2> Артур Курицы..:
DELIMITER //

DROP FUNCTION IF EXISTS DELETE_DOUBLE_SPACES//
CREATE FUNCTION DELETE_DOUBLE_SPACES ( title VARCHAR(250) )
RETURNS VARCHAR(250) DETERMINISTIC
BEGIN
    DECLARE result VARCHAR(250);
    SET result = REPLACE( title, '  ', ' ' );
    WHILE (result <> title) DO 
        SET title = result;
        SET result = REPLACE( title, '  ', ' ' );
    END WHILE;
    RETURN result;
END//
DELIMITER ;

SELECT DELETE_DOUBLE_SPACES('a    b');



3> tomconnors..:

我知道这个问题用mysql标记,但如果你有幸使用MariaDB,你可以更容易地做到这一点:

SELECT REGEXP_REPLACE(column, '[[:space:]]+', ' ');



4> nobody..:

这个解决方案不是很优雅,但因为你没有任何其他选择:

UPDATE t1 set str = REPLACE( REPLACE( REPLACE( str, "  ", " " ), "  ", " " ), "  ", " " );



5> 小智..:

这是一个古老的技巧,不需要正则表达式或复杂的函数。

您可以使用替换功能3次,如下所示:

REPLACE('This is    my   long    string',' ','<>')

变成:

This<>is<><><><>my<><><>long<><><><>string

然后,将所有出现的'> <'用空字符串''替换,将其包装在另一个替换中:

REPLACE(
  REPLACE('This is    my   long    string',' ','<>'),
    '><',''
)

This<>is<>my<>long<>string

然后最后一个最后的替换将'<>'转换回单个空格

REPLACE(
  REPLACE(
    REPLACE('This is    my   long    string',
      ' ','<>'),
    '><',''),
  '<>',' ')

This is my long string

本示例是使用MYSQL创建的(在前面放置了SELECT),但是可以使用多种语言。

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有