mysql字符串逆序_Mysql中存储过程或函数 如何将逗号分隔的字符串倒序输出 如 :4531,8651,3256 变为: 3256,8651,4531...

展开全部

DELIMITER //

DROP FUNCTION ReverseWordBy //

CREATE FUNCTION ReverseWordBy(pOldVal TINYTEXT,  pDivChar  CHAR(1))

RETURNS TINYTEXT

BEGIN

/** 预期结果.  **/

DECLARE vResult TINYTEXT;

-- 当前逗号的位置.

DECLARE vIndex INT;

-- 前一个逗62616964757a686964616fe58685e5aeb931333332623330号的位置.

DECLARE vPrevIndex INT;

-- 查询第一个 逗号的位置.

SET vIndex = INSTR(pOldVal, pDivChar);

IF vIndex = 0 THEN

-- 参数中没有逗号,直接返回.

RETURN pOldVal;

END IF;

-- 初始化情况,前一个逗号不存在.

SET vPrevIndex = 0;

-- 初始化结果为空白字符.

SET vResult = '';

-- 循环处理。

WHILE vIndex > 0 DO

-- 设置结果 = 本次查询的结果 ,  以前的查询结果.

SET vResult = CONCAT(SUBSTRING(pOldVal, vPrevIndex + 1, (vIndex-vPrevIndex-1)), pDivChar, vResult);

-- 前一个逗号的位置 = 当前逗号的位置

SET vPrevIndex = vIndex;

-- 查询下一个逗号的位置.

SET vIndex = LOCATE(pDivChar,  pOldVal,  vPrevIndex + 1);

END WHILE;

-- 最后追加最后一组数据.

SET vResult = CONCAT(SUBSTRING(pOldVal, vPrevIndex + 1), pDivChar, vResult);

-- 清除掉最后一个 逗号.

SET vResult = LEFT(vResult, LENGTH(vResult)-1);

-- 返回结果.

RETURN vResult;

END;

//

DELIMITER ;

SELECT ReverseWordBy('4531,8651,3256',   ',') A;

SELECT ReverseWordBy('1,12,123,1234,12345,123456',   ',') B;

输出结果:mysql> SELECT ReverseWordBy('4531,8651,3256',   ',') A;

+----------------+

| A              |

+----------------+

| 3256,8651,4531 |

+----------------+

1 row in set (0.00 sec)

mysql>

mysql> SELECT ReverseWordBy('1,12,123,1234,12345,123456',   ',') B;

+----------------------------+

| B                          |

+----------------------------+

| 123456,12345,1234,123,12,1 |

+----------------------------+

1 row in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值