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( ) ;
熱點內容