SUBSTRING 函数

SUBSTRING 函数返回字符串的子集。
SUBSTRING 函数
元素 描述 限制 语法
length 要从 source_string 返回的字符数 必须为返回整数的表达式、常量、列或主变量 文字的数值
source_string SUBSTRING 函数的字符串参数 必须为其值可转换为字符数据类型的表达式、常量、列或主变量 表达式
start_position source_string 中返回首个字符的位置 必须为返回整数的表达式、常量、列或主变量 文字的数值

SUBSTRING 函数的任何参数都必须为内建的数据类型。

返回数据类型是 source_string 参数的数据类型。如果主变量是源,则返回值为 NVARCHAR 或 NCHAR,根据返回的字符串的长度来定,使用 来自 CONCAT 函数的返回类型 部分描述的返回类型提升规则。

该子集开始于 start_position 指定的列位置。下列表格展示数据库服务器如何基于 start_position 的输入值来确定返回的子集的起始位置。
Start_Position 的值 数据库服务器如何确定返回子集的起始位置
正的

source_string 中的第一个字符向前计数

例如,如果 start_position = 1,则 source_string 中的第一个字符是返回的子集中的第一个字符。

零(0

source_string

中的第一个字符之前(即,左边的第一个字符)的一个位置计数

例如,如果 start_position = 0 且 length = 1,则数据库服务器返回 NULL,反之如果 length = 2,数据库服务器返回 source_string 中的第一个字符。

负的

source_string 中的最后一个字符之后(即,右边的第一个字符)的一个位置向后计数

例如,如果 start_position = -1,则返回的子集的起始位置是 source_string 中的最后一个字符。

length 指定子集的大小。length 参数指的是逻辑字符的数目,而不是字节数。如果您省略 length 参数,或如果您指定的 length 大于从 start_positionsource_string 的末尾的字符数,则 SUBSTRING 函数返回开始于 start_positionsource_string 的整个部分。下列示例指定起始于列位置 3 的源字符串的子集,且应返回两个字符长。:
SELECT SUBSTRING('ABCDEFG' FROM 3 FOR 2) FROM mytable;
下列表格展示此 SELECT 语句的输出。
(constant)
CD
在下列示例中,用户为返回子集指定负的 start_position
SELECT SUBSTRING('ABCDEFG' FROM -3 FOR 7)
          FROM mytable;
数据库服务器在位置 -3 开始(第一个字符之前的四个位置)并向前计数 7 字符。下列表格展示此 SELECT 语句的输出。
(constant)
ABC