程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL字符串分割自定義函數

MySQL字符串分割自定義函數

編輯:MySQL綜合教程


/** *方法一 */ select * from dbo.split(’01__02__03’,’__’)     發生錯誤,返回的結果不是我們原本要的結果:     www.2cto.com     -------------------   --想要的結果     01     02     03   -----------------     www.2cto.com     --實際結果:     01     _02     _03     以前我也寫過類似的字符串分割自定義函數,也沒有想過上面出現的這樣問題。     我原來的函數是這樣的:     /*    StringToTable    */    CREATE FUNCTION StringToTable(@StringX varchar(8000),@Split nvarchar(10))    RETURNS @TableResult TABLE(TableID nvarchar(20))    AS    BEGIN    DECLARE @Index int 
    SET @Index=CHARINDEX(@Split,@StringX,1)    WHILE (@Index>=1)    BEGIN   www.2cto.com     INSERT INTO @TableResult SELECT LEFT(@StringX,@Index-1)    SELECT    @StringX=RIGHT(@StringX,LEN(@StringX)-@Index),@Index=CHARINDEX(@Split,@StringX,1)    END    IF(@StringX<>’’) INSERT INTO @TableResult SELECT @StringX    RETURN    END     使用類似的select * from dbo.split(’01__02__03’,’__’) 一樣出問題。     經過一下的修改就可以了,修改後程序為:   /*    StringToTable    */    CREATE FUNCTION StringToTable(@StringX varchar(8000),@Split nvarchar(10))    RETURNS @TableResult TABLE(TableID nvarchar(20))    AS    BEGIN    DECLARE @Index int    DECLARE @LenIndex int    SELECT @LenIndex=LEN(@Split),@Index=CHARINDEX(@Split,@StringX,1)    WHILE (@Index>=1) 
    BEGIN    INSERT INTO @TableResult SELECT LEFT(@StringX,@Index-1)    SELECT    @StringX=RIGHT(@StringX,LEN(@StringX)-@Index-@LenIndex+1),@Index=CHARINDEX(@Split,@Stri   www.2cto.com     ngX,1)    END    IF(@StringX<>’’) INSERT INTO @TableResult SELECT @StringX    RETURN    END   /** *方法二 */ set @b='123;234;567;789';    CREATE TEMPORARY TABLE splittable(         id INT AUTO_INCREMENT primary key,         VALUE VARCHAR(20)     ) ;  www.2cto.com     set @sql=concat(concat("insert into splittable(value) values ('",replace(@b,';',"'),('")),"')");    prepare stem from @sql; execute stem;   select * from splittable;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved