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>
相关推荐
ao-weilai3 分钟前
MySQL数据库:内置函数
android·数据库·mysql
LaughingZhu6 分钟前
Product Hunt 每日热榜 | 2026-10-02
数据库·人工智能·深度学习·神经网络·搜索引擎
lcj251140 分钟前
【Linux】 Makefile 详解
linux·笔记·面试
天疆说1 小时前
腾讯会议 Linux 版在 NVIDIA 显卡上看不到画面:EGL 像素配置与窗口视觉不匹配的排查与修复
linux·数据库·腾讯会议
常州晟凯电子科技1 小时前
sigmaStar SSC305DE/SSC308开发笔记之开发环境搭建和SDK编译
人工智能·笔记·嵌入式硬件·物联网·性能优化·视频编解码
2603_969579281 小时前
中小团队数据库选型:MySQL vs PostgreSQL,业务场景怎么选
数据库·mysql·postgresql
wdfk_prog1 小时前
LWIP教程 00:从网线上的电信号到 lwIP——PHY、MAC、DMA 与 `netif` 的完整边界
运维·网络·笔记·学习·ip
小黄蚁2 小时前
无人驾驶入门笔记(一)
笔记·自动驾驶·信息与通信
IT大白鼠2 小时前
图数据库系列 · 第 06 篇——避坑汇总:经典生产问题
数据库·nosql·图库数据库