sql server: split 函数;cross apply操作符

1、语法: STRING_SPLIT ( string , separator , enable_ordinal )

解释:将一个包含分隔子字符串的字符串,通过字符分隔符,输出一个单列表或双列表,这取决于enable_ordinal参数

2、参数:

string

任何字符类型(例如 nvarchar、varchar、nchar 或 char)的表达式。

separator

任何字符类型(例如nvarchar(1)、varchar(1)、nchar(1) 或 char(1))的单字符表达式,用作串联子字符串的分隔符。

enable_ordinal

一个 int 或 bit 表达式,用作启用或禁用 ordinal 输出列的标志。

如果值为 1,则启用 ordinal 列。

如果省略 enable_ordinal 、为 NULL 或值为 0,则禁用 ordinal 列。

3、返回类型

如果未启用 ordinal 输出列,STRING_SPLIT 将返回一个单列表,其中的行即子字符串。 列的名称为 value。 如果任何输入参数为 nvarchar 或 nchar,则它返回 nvarchar 。 否则,将返回 varchar。 返回类型的长度与字符串参数的长度相同。

如果 enable_ordinal 参数传递的值为 1,则返回第二个名为 ordinal 的列,其中包含每个子字符串在输入字符串中的位置(从 1 开始的索引值)。 返回类型为 bigint。


sql 复制代码
SELECT ...
FROM table1
CROSS APPLY (table_expression) AS alias

CROSS APPLY 是 SQL 中的一个联接操作,它允许你将一个表(或表达式的结果集)与另一个表(或表达式的结果集)进行联接。与普通的 JOIN 操作不同的是,CROSS APPLY 会对左表的每一行都执行右表(或表达式)的计算,并将结果集展开为多行。这种操作特别适用于需要对左表的某一列(通常是包含复杂数据或需要计算的列)进行逐行处理并生成多行结果的场景。

例如

sql 复制代码
SELECT
    e.EmployeeID,
    e.EmployeeName,
    s.value AS Skill
FROM
    Employees e
CROSS APPLY
    STRING_SPLIT(e.Skills, ',') s
相关推荐
AIgorithmGEEK7 小时前
MySQL 索引全解(下):建、查、删实战与知识速查表
数据库·mysql·b+树·索引
唠点键盘之外的9 小时前
26 向量数据库实战:从 0 搭一条能用的检索链路(pgvector + Spring AI)
数据库·人工智能·spring
云和恩墨9 小时前
数据库监控简史:监控不止于告警——从图表大爆发到健康管理闭环
数据库
ly76899 小时前
MongoDB 事务开销实测:快照隔离下的写冲突、重试与分片事务边界
数据库·mongodb·事务·分片集群·快照隔离·写冲突
豆角焖肉9 小时前
Spring AOP 自定义注解实现系统操作日志
数据库·自定义注解·springaop·操作日志·aop 切面
金伟API102411 小时前
不会写复杂SQL怎么办?
数据库·sql
执笔为剑11 小时前
2.1.2-1、V8R3迁移到V8R6-Oracle兼容特性
数据库
geovindu11 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
for_ever_love__12 小时前
MySQL SELECT 与 WHERE 优化实战:可搜索条件、联合索引与执行计划
数据库·mysql·oracle·select·where·条件优化·查询优化技巧
2501_9318037512 小时前
MySQL 锁机制详解
数据库·mysql