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
相关推荐
Wyz20121024几秒前
Python 字典高效合并:自定义处理重复键的完整指南
jvm·数据库·python
时间静止不是简史2 分钟前
当MyBatis-Plus的like遇上SQL通配符:下划线翻车记
java·sql·mybatis
2401_897190553 分钟前
如何在保留功能逻辑的前提下隐藏网页菜单项(CSS 隐藏
jvm·数据库·python
倔强的石头1064 分钟前
NFS网络文件系统下企业级数据库安装排障实战:环境变量失效与权限问题的深度解析
网络·数据库
2501_914245935 分钟前
如何在phpMyAdmin中查询加密数据_AES_DECRYPT函数的实时解密展示
jvm·数据库·python
21439658 分钟前
如何防止SQL注入利用存储过程_确保存储过程不拼字符串
jvm·数据库·python
2301_7641505610 分钟前
如何统计表单中已填写的特定类名输入框数量
jvm·数据库·python
2401_8971905513 分钟前
宝塔面板SSH提示连接被拒绝_检查服务器端口开关
jvm·数据库·python
2401_8716965214 分钟前
MySQL无法通过网络连接服务器_检查bind-address与访问权限
jvm·数据库·python
2401_8877245016 分钟前
SQL注入的安全架构设计_将数据库置于内网隔离区
jvm·数据库·python