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中。