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
相关推荐
阿贵---4 小时前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
稻草猫.4 小时前
MyBatis-Plus高效开发全攻略
java·数据库·后端·spring·java-ee·mybatis·mybatis-plus
人道领域4 小时前
Day | 09 【苍穹外卖:订单售后业务】
java·数据库·后端
minji...4 小时前
Linux 进程间通信(一)进程间通信与匿名管道
linux·运维·服务器·数据结构·数据库·c++
XDHCOM4 小时前
ORA-12532: TNS:invalid argument 故障解析,Oracle报错远程处理技巧与修复方法分享
数据库·oracle
IMPYLH4 小时前
Linux 的 csplit 命令
linux·运维·服务器·数据库
cm6543204 小时前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
星辰_mya4 小时前
利用 BeanPostProcessor 实现动态增强与框架开发
数据库
qq_416018725 小时前
游戏与图形界面(GUI)
jvm·数据库·python
Sunshine for you5 小时前
使用Python分析你的Spotify听歌数据
jvm·数据库·python