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>
相关推荐
shalou29012 小时前
mysql-connector-java 和 mysql-connector-j的区别
android·java·mysql
pop_xiaoli2 小时前
effective-Objective-C 第三章阅读笔记
笔记·ios·objective-c
数据知道2 小时前
PostgreSQL:详解 pgAudit 插件的使用(数据脱敏与审计)
数据库·postgresql
_千思_2 小时前
【小白说】数据库系统概念 2
数据库·oracle
Re.不晚2 小时前
Redis——分布式锁
数据库·redis·分布式
桂花很香,旭很美2 小时前
[7天实战入门Go语言后端] Day 3:项目结构与配置——目录组织、环境变量与 viper
开发语言·数据库·golang
倔强的石头1062 小时前
国产化时序替换落地指南:用金仓数据库管好海量时序数据
数据库·kingbase
qw102482 小时前
MySQL-mysql zip安装包配置教程
android·mysql·adb
生命因何探索2 小时前
Redis—主从复制+哨兵
数据库·redis·php