日期:2014-05-16  浏览次数:21077 次

mysql如何把多个空格替换成一个字符
比如
SQL code
SELECT replace( "a   b c", ' ', '-' ) AS STRING 

得到

SQL code
mysql> select replace('a   b c',' ','-');
+----------------------------+
| replace('a   b c',' ','-') |
+----------------------------+
| a---b-c                    |
+----------------------------+
1 row in set (0.00 sec)

mysql>



问题是如何把多个空格替换成一个'-'字符,最终结果应该是: a-b-c

------解决方案--------------------
要用SP

DELIMITER $$

USE `testa`$$

DROP PROCEDURE IF EXISTS `dd2`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `dd2`(ff VARCHAR(100))
BEGIN
DECLARE i,j INTEGER;
DECLARE ff1,ff2 VARCHAR(1000);
SET ff1='';
SET j=1;
SET i=LENGTH(ff);
WHILE j<=i DO
BEGIN
SET ff2=MID(ff,j,1);
IF ASCII(ff2)<>32 THEN
SET ff1=CONCAT(ff1,ff2,'-');
END IF;
SET j=j+1;
END;
END WHILE;
SELECT MID(ff1,1,LENGTH(ff1)-1);
END$$

DELIMITER ;

CALL dd2('a b c d');
------解决方案--------------------
SELECT GROUP_CONCAT(MID(a1,b.id,1) SEPARATOR '-' ) FROM (
SELECT ('a b c d') AS a1) a LEFT JOIN zz.lsb1 b ON LENGTH(a1)>=b.id WHERE MID(a1,b.id,1)<>' '
------解决方案--------------------
MySQL中不支持正则替换。用存储过程应该是最好的方法了。
------解决方案--------------------
你可以用PGSQL或者ORACLE这样支持正则替换的数据库先把数据搞好,然后导入到MYSQL中。