适用于:SQL Server 2016 (13.x) 及更高版本
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
是一个表值函数,它根据指定的分隔符将字符串拆分为子字符串行。
兼容性级别为 130
要求兼容性级别至少为 130。 该级别低于 130 时,数据库引擎将找不到 函数。
若要更改数据库的兼容性级别,请参阅查看或更改数据库的兼容性级别。
Transact-SQL 语法约定
string
任何字符类型(例如 nvarchar、varchar、nchar 或 char)的表达式。
separator
任何字符类型(例如nvarchar(1)、varchar(1)、nchar(1) 或 char(1))的单字符表达式,用作串联子字符串的分隔符。
enable_ordinal
适用于:Azure SQL 数据库、Azure SQL 托管实例、Azure Synapse Analytics(仅限无服务器 SQL 池)、SQL Server 2022 (16.x) 及更高版本
一个 int 或 bit 表达式,用作启用或禁用 输出列的标志。 如果值为 ,则启用 列。 如果省略 enable_ordinal 、为 或值为 ,则禁用 列。
如果未启用 输出列, 将返回一个单列表,其中的行为子字符串。 列的名称为 。 如果任何输入参数为 nvarchar 或 nchar,则它返回 nvarchar 。 否则,将返回 varchar。 返回类型的长度与字符串参数的长度相同。
如果 enable_ordinal 参数传递的值为 ,则返回第二个名为 的列,其中包含每个子字符串在输入字符串中的位置(从 1 开始的索引值)。 返回类型为 bigint。
输入一个包含分隔子字符串的字符串,并输入一个字符用作分隔符。 根据需要,函数还支持值为 或 的第三个参数,该参数分别禁用或启用了 输出列。
输出一个单列表或双列表,具体取决于 enable_ordinal 参数。
- 如果 enable_ordinal 为 、被省略或值为 , 将返回一个单列表,其中的行包含子字符串。 输出列的名称为 。
- 如果 enable_ordinal 的值为 ,该函数将返回一个包含两列的表,其中 列由原始输入字符串中从 1 开始的子字符串的索引值组成。
请注意,enable_ordinal 参数必须是常数值,而不能是列或变量。 它还必须是值为 或 的 bit 或 int 数据类型。 否则,此函数将引发错误。
输出行可以按任意顺序排列。 顺序不保证与输入字符串中的子字符串顺序匹配。 可以通过使用 子句(在 语句中)覆盖最终排序顺序,例如 或 。
(char(0)) 是 Windows 排序规则中未定义的字符,无法包括在 中。
当输入字符串包含两个或多个连续出现的分隔符字符时,将出现长度为零的空子字符串。 空子字符串的处理方式与普通子字符串相同。 可以通过使用 子句筛选出包含空的子字符串的任何行,例如 。 如果输入字符串为 ,则 表值函数返回一个空表。
例如,以下 语句使用空格字符作为分隔符:
在实践运行中,前面的 返回以下结果表:
下面的示例通过为可选的第三个参数传递 来启用 列:
然后,此语句将返回以下结果表:
分析逗号分隔值列表,并返回所有非空标记:
如果分隔符之间没有任何内容, 将返回空字符串。 条件将删除空令牌。
生产表中的某一列为逗号分隔的标记列表,如以下示例所示:
下面的查询转换每个标记列表,并将它们与原始行联接起来:
结果集如下。
用户必须创建一个报表,表中显示每个标记的产品数量并按产品数量排序,然后只筛选出产品数量在两个以上的标记。
开发人员必须创建按关键字查找文章的查询。 可以使用以下查询:
查找具有单个标记 (clothing) 的产品:
查找具有两个指定标记(clothing 和 road)的产品:
开发人员必须创建一个按 ID 列表查找文章的查询。 可以使用以下查询:
上述 使用情况是常见反模式的替代。 此类反模式可能涉及在应用程序层或 Transact-SQL 中创建动态 SQL 字符串。 或者可以通过使用 运算符来实现反模式。 请参阅以下示例 语句:
以下语句将查找具有偶数索引值的所有行:
上述语句返回以下表:
下面的语句返回输入字符串的拆分子字符串值及其序号值,按 列排序:
上述语句返回以下表:
- LEFT (Transact-SQL)
- LTRIM (Transact-SQL)
- RIGHT (Transact-SQL)
- RTRIM (Transact-SQL)
- SUBSTRING (Transact-SQL)
- TRIM (Transact-SQL)
- 字符串函数 (Transact-SQL)
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/27822.html