sql去重复函数相关

来源:互联网 发布:知乎 一天背1000个单词 编辑:程序博客网 时间:2024/05/17 22:26

关于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 functiondeclare @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) > 0begin    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('字符串')

关于第二段代码
其实具体的思路都差不多了关键在于多思考!


0 0
原创粉丝点击