字符串聚合函数(去除重复值)

kwannut06667

kwannut06667

2016-02-19 11:09

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的字符串聚合函数(去除重复值),希望大家看完后能赶快学习起来。
--功能:提供字符串的替代聚合函数
--说明:例如,将下列数据
--test_id test_value
--------------------
'a' '01,03,04'
'a' '02,04'
'b' '03,04,08'
'b' '06,08,09'
'c' '09'
'c' '10'
--转换成test_vlaue列聚合后的函数,且聚合后的字符串中的值不重复

--test_id test_value
--------------------
'a' '01,03,04,02'
'b' '03,04,08,06,09'
'c' '09,10'

--代码-------------------------------------------GO
GO
if object_id(N'dbo.merge',N'FN') is not null
drop function dbo.merge
GO
--函数功能:字符串聚合及去除重复值
create function dbo.merge
(
@test_id varchar(50)
)
returns varchar(50)
as
begin
--字符串聚合-------------------------START
declare @s varchar(8000)
set @s = ''

select
@s = @s + test_value + ','
from test_a
where test_id = @test_id
--字符串聚合-------------------------END

--去除重复值-------------------------START
declare @value varchar(8000)--存储第一个逗号前的值
declare @result varchar(8000)--存储唯一值的中间字符串
set @result = ''

--有值的场合
while charindex(',',@s) 0
begin
--取第一个逗号前的值
set @value = left(@s,charindex(',',@s) -1)

--第一个逗号前的值没在结果中出现
if charindex(',' + @value + ',',',' + @result) = 0
begin
--加入中间字符串
set @result = @result + @value + ','
end

--去除第一个值以及后面的逗号(剔除法),继续循环判断
set @s = right(@s,(len(@s) - charindex(',',@s)))
end

set @s = @result
--去除重复值-------------------------END

return left(@s,len(@s)-1)
end
GO

if object_id(N'test_a',N'U') is not null
drop table test_a
GO

create table test_a
(
test_id varchar(50),
test_value varchar(50)
)

insert into test_a
select 'a','01,03,04' union all
select 'a','02,04' union all
select 'b','03,04,08' union all
select 'b','06,08,09' union all
select 'c','09' union all
select 'c','10'

select
test_id,
test_value = dbo.merge(test_id)
from test_a
group by test_id
展开更多 50%)
分享

猜你喜欢

字符串聚合函数(去除重复值)

编程语言 网络编程
字符串聚合函数(去除重复值)

Sql Server 字符串聚合函数

编程语言 网络编程
Sql Server 字符串聚合函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java 字符串匹配函数

Web开发
java 字符串匹配函数

mysql的字符串函数

MySQL mysql数据库
mysql的字符串函数

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

测字符串长度函数

ASP
测字符串长度函数

JavaScript中split字符串函数

Web开发
JavaScript中split字符串函数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

PPT计时器的制作方法

PPT计时器的制作方法

Java判断本机IP地址类型的方法

Java判断本机IP地址类型的方法
下拉加载更多内容 ↓