• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
愛如風過
我想到一个地方,那里最好一年下2次雨,1次下半年!
博客园    首页    新随笔    联系   管理    订阅  订阅
'1,2,3,6-8,10'转换为'1,2,3,6,7,8,10'

declare @str nvarchar(100),@count int,@num1 int,@num2 int
select @str='1,2,3,4-6,7,8-15,24-30'
select @str=','+@str+','
while len(@str)-len(replace(@str,'-',''))>0
begin
select @count=charindex('-',@str)
print charindex(',',reverse(substring(@str,1,@count-1)))-1
--获取-前面的值
select @num1=reverse(substring(reverse(substring(@str,1,@count-1)),1,charindex(',',reverse(substring(@str,1,@count-1)))-1))
--获取-后面的值
select @num2=substring(@str,@count+1,charindex(',',(substring(@str,@count+1,len(@str))))-1)

if @num2-@num1=1
set @str=stuff(@str,@count,1,',')
else
set @str=stuff(@str,charindex('-',@str),1,','+cast((@num1+1)as nvarchar(100))+'-')
end
print reverse(stuff(reverse(stuff(@str,1,1,'')),1,1,''))

posted on 2006-04-20 09:31  愛如風過  阅读(152)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3