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
相关推荐
程序猿零零漆14 分钟前
【金仓数据库征文】金仓数据库:国产化浪潮下的技术突破与行业实践
数据库·金仓数据库 2025 征文·数据库平替用金仓
浩浩测试一下26 分钟前
SQL注入高级绕过手法汇总 重点
数据库·sql·安全·web安全·网络安全·oracle·安全架构
Pasregret1 小时前
缓存与数据库一致性深度解析与解决方案
数据库·缓存·wpf
skywalk81631 小时前
Graph Database Self-Managed Neo4j 知识图谱存储实践2:通过官方新手例子入门(未完成)
数据库·知识图谱·neo4j
Lucky GGBond1 小时前
MySQL 报错解析:SQLSyntaxErrorException caused by extra comma before FROM
数据库·mysql
Claudio1 小时前
【MySQL】联合索引和覆盖索引(索引失效的误区讲解+案例分析)
数据库
獨枭1 小时前
SQL Server 2019 安装与配置详细教程
sql·sqlserver
纪元A梦2 小时前
Redis最佳实践——性能优化技巧之监控与告警详解
数据库·redis·性能优化
GarfieldFine2 小时前
MySQL索引使用一定有效吗?如何排查索引效果?
数据库·mysql
cypking2 小时前
mysql 安装
数据库·mysql·adb