中易网

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

答案:2  悬赏:50  
解决时间 2021-02-15 03:33
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;
  -- 前一个逗号的位置. 
  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)
全部回答
母爱触动了我的心灵母爱是一盏盏路灯,为我驱除黑暗,独留光明;母爱是一根根琴弦,触动了我的心灵;母爱是一把把雨伞,为我遮风挡雨;母爱是……还记得看过一篇文章,名字叫《藏羚羊的跪拜》,写的是:一位老猎人早晨走出房间,看见在不远处有一支肥健的藏羚羊,他不禁眼前一亮,急忙取出一把猎枪,正当他来到藏羚羊面前,举起枪对准它时,这只母藏羚羊突然间两只前腿跪了下来,两行热泪涌出了他那双美丽而又无助的眼睛,老猎人心里一颤,但还是闭上了眼睛,山谷里回荡着一声枪响,藏羚羊死了,它仍跪在地上,那泪痕依稀可见。老猎人回到屋里,辗转反侧,久久不能入睡,第二天,当他出门剖开它的腹部时,老猎人惊呆了,他的肚子里有一只已经成形但并没来得及出生的小藏羚羊,猎人觉悟了:她之所以跪下来,用哀求的眼神望着他,只是为了保护她腹中未出生的孩子。保护儿女,物犹如此,人何以堪?在512大地震中,母爱的无私与真挚,得以再次展现。她死了,是被垮塌下来的房子压死的,但她死亡的姿势很诡异:双膝跪着,双手向前匍匐着,身体弓着,当救援人员来到她面前时,感到很惊异,后来,在她的身体下面发现了一个还在襁褓中的婴儿,里面还发现了一个手机,上面有一条未发出去的短信:宝贝,如果你还活着,请记住,我爱你。这感人的一句话,这生命最后的时刻,让我不禁潸然泪下。天下所有慈母的跪拜,包括动物在内,都是神圣的。有一位伟人说过:“伟大的母爱永远是孩子安全的庇护所,它是孩子成人强大的保护”。母爱是大海,那我就是一条小鱼,永远离不开她的胸怀。母爱是雨露,那我就是一棵小树,永远离不开她的滋润。母爱是琴弦,那我就是跳动的音符,永远触动我的心灵。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
周至县好成绩教育培训学校这个地址在什么地方
本人我办的是电信4MB网速,可近来老是掉线而
Future House和Future Bounce怎么区别
什么是钻孔灌注桩的吊脚桩
天泉茶业在什么地方啊,我要过去处理事情
华为f501 怎么进入设置
白居易在文学上积极倡导什么运动
开关电源nes-100-24 多少钱一个
科克·道格拉斯所写的《斯巴达克斯》是历史事
5053怎么知道迈腾cd密码
qq的密保问题不能设置
前占房怎么去啊,有知道地址的么
英雄联盟新手玩坦克选什么英雄好
语儿泉茶业潍坊专卖店在什么地方啊,我要过去
AMDA8处理器怎么样?与酷睿几差不多?
推荐资讯
怎么换办公室助理啊,不喜欢现在这个秘书
打对方电话被限制是什么意思
什么是画眉胆毛?
什么是多功能综合楼?
下雨天提车祝福客户短信
两边肩膀不一样高,不一样宽,怎么矫正
简述欧洲地区航空运输业的主要概况
我手机的MiscoSD卡被我格式化了 现在存储音乐
2018年退休34年工龄h
学钢琴还是学电子琴呢?
君顺招待所地址在什么地方,想过去办事
甲烷乙烷丙烷丁烷哪个毒性最强?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?