sql函数里判断后输出“/”

fayxue 2008-06-10 09:36:54
create function split(@sql varchar(500),@n int)
returns varchar(100)
as
begin
set @sql=@sql+','
declare @return varchar(100),@i int,@var varchar(500)
set @i=0
while(charindex(',',@sql)>0)
begin
set @var=isnull(@var+ case @i when 3 then '|' else ',' end,'')+left(@sql,charindex(',',@sql)-1)
set @sql=right(@sql,len(@sql)-charindex(',',@sql))
set @i=case @i when 3 then 0 else @i end +1
end
set @var=@var+'|'
while(charindex('|',@var)>0)
begin
set @return=isnull(@return+',','') + parsename(replace(left(@var,charindex('|',@var)-1),',','.'),case @n when 1 then 3 when 2 then 2 when 3 then 1 end)
set @var=right(@var,len(@var)-charindex('|',@var))
end
return @return
end

select dbo.split('DN,出发日期不可变更,none,TO,可签转,none,RO,可退票,none,RN,不可退票,none',1)
select dbo.split('DN,出发日期不可变更,none,TO,可签转,none,RO,可退票,none,RN,不可退票,none',2)
select dbo.split('DN,出发日期不可变更,none,TO,可签转,none,RO,可退票,none,RN,不可退票,none',3)
加上个判断 如果输入为空则输出"/"
比如select dbo.split("",1)结果是"/"
select dbo.split("",2)结果是"/"
select dbo.split("",3)结果是"/"
T-SQL语句该怎么加?
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fayxue 2008-06-10
  • 打赏
  • 举报
回复
同样也很感谢3楼啊 非常感谢
ojuju10 2008-06-10
  • 打赏
  • 举报
回复

create function split(@sql varchar(500),@n int)
returns varchar(100)
as
begin
set @sql=@sql+','
declare @return varchar(100),@i int,@var varchar(500)
set @i=0
while(charindex(',',@sql)>0)
begin
set @var=isnull(@var+ case @i when 3 then ' ¦' else ',' end,'')+left(@sql,charindex(',',@sql)-1)
set @sql=right(@sql,len(@sql)-charindex(',',@sql))
set @i=case @i when 3 then 0 else @i end +1
end
set @var=@var+' ¦'
while(charindex(' ¦',@var)>0)
begin
set @return=isnull(@return+',','') + parsename(replace(left(@var,charindex(' ¦',@var)-1),',','.'),case @n when 1 then 3 when 2 then 2 when 3 then 1 end)
set @var=right(@var,len(@var)-charindex(' ¦',@var))
end
if charindex('/',@return)>0
set @return=left(@return,len(@return)-1)

return @return
end

utpcb 2008-06-10
  • 打赏
  • 举报
回复
楼上那个可以
中国风 2008-06-10
  • 打赏
  • 举报
回复
create function split(@sql varchar(500),@n int)
returns varchar(100)
as
begin
set @sql=@sql+','
declare @return varchar(100),@i int,@var varchar(500)
set @i=0
while(charindex(',',@sql)>0)
begin
set @var=isnull(@var+ case @i when 3 then ' ¦' else ',' end,'')+left(@sql,charindex(',',@sql)-1)
set @sql=right(@sql,len(@sql)-charindex(',',@sql))
set @i=case @i when 3 then 0 else @i end +1
end
set @var=@var+' ¦'
while(charindex(' ¦',@var)>0)
begin
set @return=isnull(@return+',','') + parsename(replace(left(@var,charindex(' ¦',@var)-1),',','.'),case @n when 1 then 3 when 2 then 2 when 3 then 1 end)
set @var=right(@var,len(@var)-charindex(' ¦',@var))
end
return coalesce(nullif(@return,''),'/')--改
end

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧