• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > 字符串聚合函数(去除重复值)

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了字符串比较函数返回值,返回值是字符串的函数,excel截取字符串函数,字符串函数,截取字符串函数等相关知识,希望本文的分享对您有所帮助
--功能:提供字符串的替代聚合函数
--说明:例如,将下列数据
--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 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-11SQL Server 2008+ Reporting Services (SSRS)使用USER登录问题
  • 2017-05-11SQL Server 2005的cmd_shell组件的开启方法
  • 2017-05-11SQLServer 2005 列所有存储过程的语句
  • 2017-05-11SQL Server 2008R2编写脚本时智能提示功能丢失的处理方法
  • 2017-05-11MSSQL2005 INSERT,UPDATE,DELETE 之OUTPUT子句使用实例
  • 2017-05-11SQL Server 2008 数据库镜像部署实例之三 配置见证服务器
  • 2017-05-11SqlServer2005 数据库同步配置图文详解
  • 2017-05-11SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移
  • 2017-05-11MSSQL 2005 安全设置图文教程
  • 2017-05-11SQL server 表操作介绍

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法
    • 更改SQL Server 2005数据库中tempdb位置的方法
    • SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)
    • 安装MSSql2005时 “以前的某个程序安装已在安装计算机上创建挂起” 的解决办法
    • 图文详解SQL Server 2008R2使用教程
    • 清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案
    • sql2008 hql语句翻译过来的分页语句介绍
    • SQL的四种连接-左外连接、右外连接、内连接、全连接、交叉连接
    • SQL2005 高效分页sql语句
    • SQL Server 2005 定时执行SQL语句的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有