求大神写一个简单的sql语句给我分析下。

创建一个函数此函数用来返回。将指定字符串。通过指定字符返回成一张表。参数1字符串参数2指定字符。函数的目的就是要返回成AABBCCDD一个表记录。参数1'AA,BB,CC... 创建一个函数
此函数用来返回。将指定字符串。通过指定字符返回成一张表。
参数1 字符串
参数2 指定字符。
函数的目的就是要返回成
AA
BB
CC
DD

一个表记录。
参数1 'AA,BB,CC,DD'
参数2 ','
展开
 我来答
frogley
2013-08-14 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1081万
展开全部
--split函数,其作用是将字符串拆分成表
CREATE FUNCTION [fn_split]
(@SourceSql varchar(8000), @StrSeprate varchar(10))
RETURNS @temp table
(
   [n] int NULL,
   [a] varchar(100) NULL
)
AS
BEGIN
  declare @i int,@n int;
  set @n=0;
  set @SourceSql=rtrim(ltrim(@SourceSql));
  set @i=charindex(@StrSeprate,@SourceSql);
  while (@i>=1)
  begin
    set @n=@n+1;
    insert @temp([n],[a]) values(@n,left(@SourceSql,@i-1));
    set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i);
    set @i=charindex(@StrSeprate,@SourceSql);
  end
  if (@SourceSql<>'')
  begin
    set @n=@n+1;
    insert @temp([n],[a]) values(@n,@SourceSql);
  end
  return
END
GO
--函数的使用:
select * from fn_split('AA,BB,CC,DD',',')

结果如下:

hu125688014
2013-08-14 · TA获得超过126个赞
知道答主
回答量:279
采纳率:0%
帮助的人:76万
展开全部
regexp_substr(字段1,'[^,]+',1,1),
regexp_substr(字段1,'[^,]+',1,2),
regexp_substr(字段1,'[^,]+',1,3),
regexp_substr(字段1,'[^,]+',1,4),
按逗号分隔
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twvampire
2013-08-14 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2995万
展开全部
CREATE FUNCTION [dbo].[split](@Long_str varchar(8000),@split_str varchar(100))      
RETURNS  @tmp TABLE(             
    short_str varchar(8000)      
)      
AS     
BEGIN     
    DECLARE @long_str_Tmp varchar(8000),  
   @short_str varchar(8000),  
   @split_str_length int  
    SET @split_str_length = LEN(@split_str)   
    IF CHARINDEX(@split_str,@Long_str)=1   
         SET @long_str_Tmp=SUBSTRING(@Long_str,@split_str_length+1,LEN(@Long_str)-@split_str_length)  
    ELSE  
         SET @long_str_Tmp=@Long_str  
    IF CHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))>1      
        SET @long_str_Tmp=@long_str_Tmp+@split_str      
    ELSE     
        SET @long_str_Tmp=@long_str_Tmp  
    WHILE CHARINDEX(@split_str,@long_str_Tmp)>0      
        BEGIN     
            SET @short_str=SUBSTRING(@long_str_Tmp,1,  
     CHARINDEX(@split_str,@long_str_Tmp)-1)      
            DECLARE @long_str_Tmp_LEN INT,@split_str_Position_END int     
            SET @long_str_Tmp_LEN = LEN(@long_str_Tmp)      
            SET @split_str_Position_END = LEN(@short_str)+@split_str_length      
            SET @long_str_Tmp=REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),1,  
     @long_str_Tmp_LEN-@split_str_Position_END))  
            IF @short_str<>'' INSERT INTO @tmp SELECT @short_str      
        END     
    RETURN       
END  
--select * from dbo.split('1/2/3/4/5/6/','/')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式