关于sql中对于一个字符串去重复的实现方式
目录
[TOC]
- 对一个字符串进行处理但是存在重复的问题
- 编写一个SQl函数来实现我们所需要的效果
相关思路
- 思考
我应该怎样来实现这个功能 - 如何实现
- 编写测试代码
- 测试所需要的效果
- 如果有问题从新开始
关于SQL中的函数的一些扩展
sql中有 字符串函数,数字函数,日期函数,系统函数,
以及自定义函数 标量值函数,表值函数 相关介绍–> 博客园
第一段代码
create function StringRemove(@str nvarchar(2000))
returns varchar(2000)
as
begin
declare @result nvarchar(max),@temp nvarchar(max)
set @result=''
set @temp=''
while(charindex(';',@str)<>0)
begin
set @temp=substring(@str,1,charindex(';',@str))
if(charindex(@temp,@result)<=0)
set @result=@result+@temp
set @str=stuff(@str,1,charindex(';',@str),'')
end
return @result
end
GO
第二段代码
CREATE function
declare @str varchar(8000)
declare @ret varchar(8000),@return varchar(8000)
select @str = 'APR-11,APR12,APR06,APR-11,APR12,APR06'
select @str = @str+','
while charindex(',',@str) > 0
begin
select @ret = substring(@str,1,charindex(',',@str)-1)
select @return = isnull(@return+',','')+@ret
select @str = replace(@str,@ret+',','')
end
select @return
讲讲我对代码的理解
上面的代码
创建函数 接收一个字符串 返回一个字符串
然后在其中进行处理
定义一个 结果值的变量 @result
一个临时变量 @tem
charindex(';')函数 接收一个char 字符返回找到的索引
substring()
截取从传入的参数 从第一个位置到首次出现’;’的位置然后放到 临时变量中去@temp
如果 charindex(@temp,@result)<=0
表示找到他自己了
保存到 结果变量@result
并且将第一个’;’ 替换成” 空格
然后返回就可以了
以上 就是我所理解的
函数是在网上看到的
其中的’;’ 可以替换
比如: ‘a,ab,c,a,dd,cc’
是这种的话就讲’;’ 替换为’,’
其他也是如此
使用的时候就直接dbo.StringRemove('字符串')
关于第二段代码
其实具体的思路都差不多了关键在于多思考!
2万+

被折叠的 条评论
为什么被折叠?



