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
相关推荐
MSTcheng.几秒前
【C++】C++异常
java·数据库·c++·异常
草莓熊Lotso1 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
大模型玩家七七1 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
岳麓丹枫0012 小时前
PostgreSQL 中 pg_wal 目录里的 .ready .done .history 文件的生命周期
数据库·postgresql
陌上丨8 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_56788 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw9 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH30739 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道9 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据10 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构