求大神写一个简单的sql语句给我分析下。
创建一个函数此函数用来返回。将指定字符串。通过指定字符返回成一张表。参数1字符串参数2指定字符。函数的目的就是要返回成AABBCCDD一个表记录。参数1'AA,BB,CC...
创建一个函数
此函数用来返回。将指定字符串。通过指定字符返回成一张表。
参数1 字符串
参数2 指定字符。
函数的目的就是要返回成
AA
BB
CC
DD
一个表记录。
参数1 'AA,BB,CC,DD'
参数2 ',' 展开
此函数用来返回。将指定字符串。通过指定字符返回成一张表。
参数1 字符串
参数2 指定字符。
函数的目的就是要返回成
AA
BB
CC
DD
一个表记录。
参数1 'AA,BB,CC,DD'
参数2 ',' 展开
3个回答
展开全部
--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',',')
结果如下:
展开全部
regexp_substr(字段1,'[^,]+',1,1),
regexp_substr(字段1,'[^,]+',1,2),
regexp_substr(字段1,'[^,]+',1,3),
regexp_substr(字段1,'[^,]+',1,4),
按逗号分隔
regexp_substr(字段1,'[^,]+',1,2),
regexp_substr(字段1,'[^,]+',1,3),
regexp_substr(字段1,'[^,]+',1,4),
按逗号分隔
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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/','/')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询