SqlServer自定义聚合函数

sqlserver2017版本包括以上的可以使用string_agg(字段,’,’)函数

sqlserver查询版本:
select @@version

Sql Server自定义聚合函数详细bai步骤

开始->
在这里插入图片描述

输出->
在这里插入图片描述

首先用baiVS2008/VS2005建立一个SQL Server项目,右键解决方案添加新项
在这里插入图片描述
点击“确定”bai按钮后,SQL Server项目会要求连接一个数据库,我们可以选择一个数据库

在这里插入图片描述
然后在工程中加入一个聚合类(joinstr.cs),如图
在这里插入图片描述
joinstr.cs中的最终代码如下:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text;[Serializable]
[SqlUserDefinedAggregate(Format.UserDefined, //use custom serialization to serialize the intermediate resultIsInvariantToNulls = true, //optimizer propertyIsInvariantToDuplicates = false, //optimizer propertyIsInvariantToOrder = false, //optimizer property    MaxByteSize = 8000), //maximum size in bytes of persisted value
]public struct JoinStr:IBinarySerialize
{private StringBuilder sbIntermediate;public void Init(){sbIntermediate = new StringBuilder();}public void Accumulate(SqlString Value){if (Value == null || Value.ToString().ToLower().Equals("null")){return;}else{sbIntermediate.Append(Value);}}public void Merge(JionStr Group){sbIntermediate.Append(Group.sbIntermediate);}public SqlString Terminate(){return new SqlString(sbIntermediate.ToString());}// This is a place-holder member field#region IBinarySerialize Memberspublic void Read(System.IO.BinaryReader r){sbIntermediate = new StringBuilder(r.ReadString());}public void Write(System.IO.BinaryWriter w){w.Write(this.sbIntermediate.ToString());    }#endregion
}

在编写完上述代码后,可以使用Visual Studio来部署(右向工程,在弹出菜单上选“部署”即可)。

在执行上面的SQL语句之前,需要将SQL Server2005的clr功能打开

在这里插入图片描述
也可以用SQL打开clr功能:

EXEC sp_configure 'clr enabled', 1
RECONFIGURE WITH OVERRIDE
GO

现在可以使用joinstr来聚合字符串了。

select [t_code_role].[role_mc] as '角色',dbo.JoinStr([t_code_right].[right_mc]+',') as '权限' from [t_data_roleright],[t_code_right],[t_code_role] where [t_data_roleright].[role_bm]=[t_code_role].[role_bm] and [t_data_roleright].[right_bm]=[t_code_right].[right_bm] group by [t_code_role].[role_mc]

转载地址:感谢 dyt0801

方案二:https://www.bbsmax.com/A/gVdnmXb15W/

方案三:http://blog.leanote.com/post/colin_xia@yeah.net/sql-server-%E6%B7%BB%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%81%9A%E5%90%88%E5%87%BD%E6%95%B0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot : Failed to decode downloaded font 和 OTS parsing error

大家好,我是烤鸭: 采坑实录,看了很多人跟我有类似问题,但是都没解决我的问题: Failed to decode downloaded font 和 OTS parsing error: 尝试了把woff文件移动到其他可以加载的静态资源文件夹下,还是无法…

【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;想把json数据直接转成对象&#xff0c;其中有个属性是list<T>&#xff1a; 异常 1 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList o…

java 实现 常见排序算法(三)快速排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之快速排序。快速排序是内部排序&#xff08;基于比较排序&#xff09;中最好的比较算法。 1. 快速排序&#xff1a; 原理&#xff1a;在要排的数&#xff08;比如数组A&#xff09;中选择一个中心值k…

解决org.apache.hadoop.io.nativeio.NativeIOException: 当文件已存在时,无法创建该文件。

Hadoop在本地运行的时候总是出现这个异常&#xff0c;虽然这个异常不影响代码运行&#xff0c;但是看着很不爽 1&#xff0c;找到log4j.properties文件&#xff0c;查看log4j.rootLogger&#xff0c;但是却没有debug log4j.rootLogger info,stdout2&#xff0c;查看pom.xm…

springboot websocket

大家好&#xff0c;我是烤鸭&#xff1a; 今天想分享一下springbootwebsocket。 之前接到一个需求&#xff0c;需要在页面监听后台的数据&#xff08;输入邮箱后&#xff0c;需要用户打开邮箱&#xff0c;页面监听用户是否点击激活邮件&#xff09;。之前的实现方式&#xff0c…

idea的plugins无法使用marketplace plugins are not loaded

idea64.exe.vmoptions删除-Djsse.enableSNIExtensionfalse 再次重启后就可以正常使用plugins&#xff01;&#xff01;&#xff01;

断电启动+智能插座 七彩虹B460主板实现电脑远程开机

BIOS设置操作步骤&#xff1a; 1&#xff0c;开机按F2进入BIOS系统&#xff08;小提示&#xff1a;不同的主板按键不一样&#xff0c;开机应该有提示&#xff09; 2&#xff0c;高级模式 > 高级 > 电源管理设置 > 交流电源恢复后处理 > 选择“开机” 3&#xff0c…

myabtis 数字+逗号 传参问题 $和#

大家好&#xff0c;我是烤鸭&#xff1a; 遇到一个maybatis传参的问题。 如果传参是数字逗号的形式&#xff0c;比如1,2,3,4,5。 问题复现&#xff1a; 项目中查询sql和navicat查询sql结果不一致。 1 项目中&#xff1a; 如图所示&#xff0c;查到一条数据。 可以看到…

SpringBoot上传文件到本服务器 目录与jar包同级

前言 看标题好像很简单的样子&#xff0c;但是针对使用jar包发布SpringBoot项目就不一样了。 当你使用tomcat发布项目的时候&#xff0c;上传文件存放会变得非常简单&#xff0c;因为你可以随意操作项目路径下的资源。但是当你使用SpringBoot的jar包发布项目的时候&#xff0c;…

org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe

大家好&#xff0c;我是烤鸭&#xff1a; 又是采坑实录。 异常如下&#xff1a; org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipeat org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:356)at org.ap…

低版本webview无法请求jquery ajax

大家好&#xff0c;我是烤鸭&#xff1a; 又来踩坑了。 1. 场景复现 有反馈我们的H5页面&#xff0c;无法正确显示页面。就类似下图这样&#xff0c;ajax没法请求到数据。 之前测试的时候是在web端做的测试&#xff0c;用安卓7.0和8.0的手机都试了一下&#xff0c;是没…

由excel导出引起的cpu 100% 和gc 的问题

大家好&#xff0c;我是烤鸭&#xff1a; 记一次 由excel导出 导致的cpu飙升200%&#xff0c;jvm 内存不足。 1. 场景复现 前端页面导出Excel&#xff0c;之前导出4,5W条数据都没什么问题的。 今天业务突然反馈说导出不了了&#xff0c;我试着导出了2w数据&#xff0…

win11耳机和扬声器怎么分开控制音量?

win11耳机和扬声器怎么分开控制音量&#xff1f; 有时候有这种需求&#xff0c;在办公位置工作听耳机&#xff0c;拔掉耳机后&#xff0c;扬声器需要自动禁止声音 1&#xff0c;搜索并打开Realtek Audio Console 2&#xff0c;点击左下角“设备高级设置”&#xff0c;播放设备…

HttpsURLConnection 返回 400

大家好&#xff0c;我是烤鸭&#xff1a; 记一次 由 HttpsURLConnection 引起的返回值400的错误。 1. 场景复现 今天线上调用第三方接口的时候突然报错了。 严格来说也不是报错&#xff0c;就是发的请求不通了&#xff0c;http报400的错误。 问了下对接方&…

npm、webpack、vue-cli 快速上手版

Node.js npm 什么是Node.js 以及npm 简单的来说 Node.js 就是运行在服务端的JavaScript&#xff0c;基于Chrome V8 引擎的。 npm 是Node.js 的包管理工具。 npm的安装和更新 Node.js下载安装 Node.js 官网下载安装。npm自带的包管理工具。 查看安装版本信息&#xff1a; -…

idea修改maven helper右键run maven的位置

idea修改 maven helper右键run maven的位置 现在调整到最上面后&#xff0c;进行maven的命令操作就非常的方便了&#xff01;

springboot webservice cxf 客户端调用

大家好&#xff0c;我是烤鸭&#xff1a; 这篇文章分享的是xcf webservice接口调用。如果接口提供方要求是webservice调用的话&#xff0c;可以参考这篇内容。 1. pom文件 <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-front…

MFC版链表实现稀疏多项式相加减

链表实现多项式运算&#xff08;加减&#xff09;MFC可视化版题目 设计一个一元稀疏多项式简单计算器。 基本要求 &#xff08;1&#xff09;输入并建立两个多项式&#xff1b; &#xff08;2&#xff09;多项式a与b相加&#xff0c;建立和多项式c&#xff1b; &#xff08;3&a…

WindTerm导出会话

WindTerm的session配置并无法被适用于其他软件中&#xff0c;所有的session保存在WindTerm安装路径下的profiles文件夹内&#xff0c;如果需要更新版本或回退&#xff0c;将所安装的版本覆盖即可&#xff0c;或是将profiles复制于新路径下。 图标闪烁设置、会话保存-导入导出 …

[官方] mysql 性能优化文档(中英文自译)

大家好&#xff0c;我是烤鸭&#xff1a; 根据官方文档翻译并精简部分内容。建议有时间的朋友下载原版查看&#xff0c;全文106页pdf&#xff0c;快的话1-2天就能看完。自己翻译的有些地方可能不完整&#xff0c;欢迎指正。官方pdf下载&#xff0c;需登录&#xff1a;https://w…