sql去重复函数相关

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值