当前位置: 首页 > news >正文

SQL Server中的FOR XML PATH以及Split

请添加图片描述

前提

数据库是在2016年以下的版本,以上的版本,现在有最新的函数可以支持者两个了

Split

在c#中Split可以将以指定字符分割的字符串转换为字符串数组,这里主要是用于,主表存储了多个从表的id,存储的时候用的字符串,从而为’1,2,3’,在不借助后端的情况下,sql讲该字符串转换为可识别的id
创建方法

create function split(@string varchar(255),--待分割字符串@separator varchar(255)--分割符
)returns @array table(item varchar(255))
as
begindeclare @begin int,@end int,@item varchar(255)set @begin = 1set @end=charindex(@separator,@string,@begin)while(@end<>0)beginset @item = substring(@string,@begin,@end-@begin)insert into @array(item) values(@item)set @begin = @end+1set @end=charindex(@separator,@string,@begin)endset @item = substring(@string,@begin,len(@string)+1-@begin)if (len(@item)>0)insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))return
END

原代码地址
使用方法

SELECT * FROM dbo.WechatUser WHERE ID IN (SELECT * FROM dbo.split('1,3,17',','))

在这里插入图片描述

FOR XML PATH(‘’)

它可以将列的输出转为行输出,非常有意思,本次是和上面那个方法连用

SELECT  CAST(Name AS varchar) +',' FROM WechatUser WHERE id IN (1,3,17) FOR XML PATH('')

原来查询的结果
在这里插入图片描述
用了FOR XML PATH的查询结果
在这里插入图片描述
这个方法原来是用来转xml的

相关文章:

  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • 【教程】DGL单机多卡分布式GCN训练
  • 深度学习(三)——Transforms的使用
  • 大模型高考数学测评结果,国内AI大模型成绩超GPT-4o!
  • pnpm包管理器总结
  • 前端组件样式穿透修改
  • OpenStack云平台管理
  • 2024.6.12 作业 xyt
  • Flutter 使用ffigen生成ffmpeg的dart接口
  • 大语言模型学习笔记-1
  • 【LLM之RAG】Self-RAG论文阅读笔记
  • 如何对stm32查看IO功能。
  • Android shell 常用 debug 命令
  • 代码整洁之道学习笔记
  • React+TS前台项目实战(一)-- 项目初始化配置及开此系列的初衷
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【Amaple教程】5. 插件
  • 2019年如何成为全栈工程师?
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • AngularJS指令开发(1)——参数详解
  • axios 和 cookie 的那些事
  • Cookie 在前端中的实践
  • github从入门到放弃(1)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JAVA并发编程--1.基础概念
  • JSONP原理
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Python进阶细节
  • React Transition Group -- Transition 组件
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SpringBoot 实战 (三) | 配置文件详解
  • 第2章 网络文档
  • 动态规划入门(以爬楼梯为例)
  • 好的网址,关于.net 4.0 ,vs 2010
  • 欢迎参加第二届中国游戏开发者大会
  • 手写双向链表LinkedList的几个常用功能
  • 数据结构java版之冒泡排序及优化
  • 数据可视化之 Sankey 桑基图的实现
  • 数组大概知多少
  • 问题之ssh中Host key verification failed的解决
  • 我的业余项目总结
  • 小程序 setData 学问多
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 译有关态射的一切
  • MPAndroidChart 教程:Y轴 YAxis
  • 阿里云移动端播放器高级功能介绍
  • 我们雇佣了一只大猴子...
  • #git 撤消对文件的更改
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)用.Net的File控件上传文件的解决方案