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>
相关推荐
辞旧 lekkk18 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
2301_8092047019 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
zjy2777719 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
笨蛋不要掉眼泪19 小时前
Mysql架构揭秘:update语句的执行流程
数据库·mysql·架构
万邦科技Lafite20 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
秋920 小时前
ruoyi项目更换为mysql9.7.0数据库
数据库
Andya_net20 小时前
MySQL | MySQL 8.0 权限管理实践-精确赋予库、表只读等权限
android·数据库·mysql
问心无愧051321 小时前
ctf show web入门37
笔记
筑梦之路1 天前
harbor数据库报错权限异常如何处理——筑梦之路
数据库·harbor
羊群智妍1 天前
2026生成式AI搜索优化:GEO监测工具全解析
笔记