SUBSTR 函数

SUBSTR 函数与 SUBSTRING 函数有相同的目的(返回源字符串的子集),但它使用不同的语法。
SUBSTR 函数
元素 描述 限制 语法
length 要从 source_string 返回的字符的数目 必须为表达式、文字、列或返回整数的主变量 表达式
source_string 作为 SUBSTR 函数的输入的字符串 必须为表达式、文字、列或可转换为字符数据类型的数据类型的主变量 表达式
start_position source_string 中的列位置,SUBSTR 函数从此位置开始返回字符 必须为整数表达式、文字、列或主变量。可有正号(+)、负号(-)或无符号。 文字的数值

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

SUBSTR 函数返回 source_string 的子集。该子集从 start_position 指定的列位置开始。下列表格展示数据库服务器如何基于 start_position. 的输入值来确定返回的子集的起始位置
Start_Position 的值 数据库服务器如何确定返回的子集的起始位置
正的 source_string 中的第一个字符开始向前计数
零(0 source_string 中的第一个字符向前计数(也就是说,将 start_position 0 处理为等同于 1)
负的 从紧跟在 source_string 中最后一个字符的原始字符向后计数。值 -1 返回 source_string 中的最后一个字符。

length 参数指定子集中逻辑字符的数目(不是字节数)。如果您省略 length 参数,则 SUBSTR 函数返回从 start_position 处开始的 source_string 的整个部分。

如果您指定负的 start_position,其绝对值大于 source_string 中字符的数目,或如果 length 大于从 start_positionsource_string 的末尾的字符的数目,则 SUBSTR 返回 NULL。(在此情况下,SUBSTR 的行为不同于 SUBSTRING 函数的行为,返回从 start_positionsource_string 的最后一个字符的所有字符,而不是返回 NULL。)

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

下列示例指定要返回的字符串从 7 个字符的 source_string 结束之前的开始位置 3 个字符开始。这意味着开始的位置是 source_string 的第五个字符。因为用户未指定 length 的值,数据库服务器返回包括从字符位置 5 至 source_string 的结尾的所有字符。
SELECT SUBSTR('ABCDEFG', -3)
          FROM mytable;
下列表格展示此 SELECT 语句的输出。
(constant)
EFG