SQL Server笔记 -- 第52章 拆分字符串函数

第52.1节 SQL Server 2008/2012/2014 使用 XML 拆分字符串

在没有 STRING_SPLIT 的旧版本,可借助 XML 实现拆分:

sql 复制代码
SELECT split.a.value('.', 'VARCHAR(100)') AS Value
FROM (
    SELECT CAST('<M>' + REPLACE('A|B|C', '|', '</M><M>') + '</M>' AS XML) AS Data
) AS A
CROSS APPLY Data.nodes('/M') AS split(a);

结果:

Value
A
B
C

第52.2节 SQL Server 2016 使用 STRING_SPLIT

2016 起提供内置函数 STRING_SPLIT

参数:

  1. string:待拆分的字符表达式(varchar/nvarchar/nchar/char)
  2. separator:单字符分隔符(varchar(1)/nvarchar(1)/char(1)/nchar(1))

示例:

sql 复制代码
SELECT value
FROM STRING_SPLIT('a,b,c', ',');

结果:

value
a
b
c

空字符串处理:

sql 复制代码
SELECT value
FROM STRING_SPLIT('', ',');
value

去掉空元素:

sql 复制代码
SELECT value
FROM STRING_SPLIT('a,,b,c', ',')
WHERE LTRIM(RTRIM(value)) <> '';

第52.3节 表变量与 XML 结合示例

sql 复制代码
-- 构造表变量
DECLARE @userList TABLE (UserKey VARCHAR(60));
INSERT INTO @userList VALUES ('bill'), ('jcom'), ('others');

-- 生成 XML
DECLARE @text XML;
SET @text = (
    SELECT UserKey
    FROM @userList
    FOR XML PATH('user'), ROOT('group')
);

-- 查看 XML 内容
SELECT @text;

XML 结果:

xml 复制代码
<group>
  <user><UserKey>bill</UserKey></user>
  <user><UserKey>jcom</UserKey></user>
  <user><UserKey>others</UserKey></user>
</group>
相关推荐
六点_dn19 小时前
RabbitMQ学习笔记-部署和使用
笔记·学习·rabbitmq
凌虚19 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
五阿哥永琪19 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善19 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
2501_9269783320 小时前
以说明书 DNA 为模板——完整 AGI 的结构图景
前端·人工智能·经验分享·笔记·ai写作
天天爱吃肉821820 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
海盗123420 小时前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
IT199521 小时前
Dify 实战笔记:工作流核心玩法 + 开源 AI 应用全解析
笔记
dong13269721 小时前
Agent Skills学习笔记
笔记·学习
赤壁小虾21 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库