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>
相关推荐
这个DBA有点耶8 小时前
从 MySQL 到时序数据库:我帮朋友做迁移的完整记录
数据库·架构·dba
Li_RuiQi8 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
泡海椒8 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql
心静财富之门8 小时前
Python 数据共享四种方案完整实例(同进程 / JSON / Redis / HTTP)
数据库·python·oracle
略略略咯咯8 小时前
啊啊啊啊啊
java·服务器·数据库
奇牙coding9 小时前
GPT-5.5 报 401 invalid_api_key 怎么办?换密钥前按 4 层排查请求头、项目权限和端点
数据库·gpt·ios·ai
IvorySQL9 小时前
PostgreSQL 日报| WAL summarizer 断言失败(10 月 26 日)
数据库·postgresql·区块链
王仔小奶9 小时前
慢SQL治理与性能调优:DBA如何用Shell/Python提升运维效率?
python·sql·dba
这个DBA有点耶10 小时前
2026年国产数据库“实际用户增长最快”核验指南:口径优先级、可查数据与选型动作清单
数据库·mysql·架构
程序员塔塔喵10 小时前
【MySQL篇|第三篇】脏读,幻读,不可重复读
数据库·mysql·不可重复读·幻读·脏读