mysql存储函数语法
发布时间: 2024-10-18 01:53:18
㈠ Mysql中存储过程或函数 如何将逗号分隔的字符串倒序输出 如 :4531,8651,3256 变为: 3256,8651,4531
DELIMITER//
DROPFUNCTIONReverseWordBy//
CREATEFUNCTIONReverseWordBy(pOldValTINYTEXT,pDivCharCHAR(1))
RETURNSTINYTEXT
BEGIN
/**预期结果.**/
DECLAREvResultTINYTEXT;
--当前逗号的位置.
DECLAREvIndexINT;
--前一个逗号的位置.
DECLAREvPrevIndexINT;
--查询第一个逗号的位置.
SETvIndex=INSTR(pOldVal,pDivChar);
IFvIndex=0THEN
--参数中没有逗号,直接返回.
RETURNpOldVal;
ENDIF;
--初始化情况,前一个逗号不存在.
SETvPrevIndex=0;
--初始化结果为空白字符.
SETvResult='';
--循环处理。
WHILEvIndex>0DO
--设置结果=本次查询的结果,以前的查询结果.
SETvResult=CONCAT(SUBSTRING(pOldVal,vPrevIndex+1,(vIndex-vPrevIndex-1)),pDivChar,vResult);
--前一个逗号的位置=当前逗号的位置
SETvPrevIndex=vIndex;
--查询下一个逗号的位置.
SETvIndex=LOCATE(pDivChar,pOldVal,vPrevIndex+1);
ENDWHILE;
--最后追加最后一组数据.
SETvResult=CONCAT(SUBSTRING(pOldVal,vPrevIndex+1),pDivChar,vResult);
--清除掉最后一个逗号.
SETvResult=LEFT(vResult,LENGTH(vResult)-1);
--返回结果.
RETURNvResult;
END;
//
DELIMITER;
SELECTReverseWordBy('4531,8651,3256',',')A;
SELECTReverseWordBy('1,12,123,1234,12345,123456',',')B;
输出结果:
mysql>SELECTReverseWordBy('4531,8651,3256',',')A;
+----------------+
|A|
+----------------+
|3256,8651,4531|
+----------------+
1rowinset(0.00sec)
mysql>
mysql>SELECTReverseWordBy('1,12,123,1234,12345,123456',',')B;
+----------------------------+
|B|
+----------------------------+
|123456,12345,1234,123,12,1|
+----------------------------+
1rowinset(0.00sec)
㈡ mysql中怎么存储数组在线等!急!
把数组转换成字符串后再存入数据库
参考函数:
implode() ---把数组转换成字符串
explode() ---把字符串转换成数组
手册里有详细说明
序列化以后存储.
对于一维数组可以简单的用
implode
explode
函数做数组——串的变换,但需注意分隔符要使用数组中不存在的字符
对于多维数组可以用序列化函数处理
serialize
unserialize
函数的用法手册中都有
㈢ mysql 存储过程或函数 split 怎么写
mysql 存储过程或函数 split 怎么写
1、函数必须指定返回值,且参数默认为IN类型。
2、存储过程没返回值,参数可以是 IN,OUT,IN OUT类型,有的人可能会理解成OUT 也算是返回值。
3、调用方式:函数 select my_fun() ;过程 call my_pro( ) ;
热点内容