SUBSTRING_INDEX 函数

SUBSTRING_INDEX 函数搜索指定的定界符字符的字符串,并基于您指定作为该函数的参数的定界符的计数返回开头或收尾字符的子字符串。

SUBSTRING_INDEX 函数有此语法:
SUBSTRING_INDEX 函数
元素 描述 限制 语法
source_ string 求值为字符串的表达式 必须为内建的字符数据类型,或可转换为字符类型的表达式、常量、列或主变量 表达式
count 求值为正整数或负整数的表达式 必须为内建的整数类型,或可转换为整数的表达式、常量、列或主变量。 表达式
delimiter 求值为字符串的表达式 必须为内建的字符数据类型,或可转换为字符类型的表达式、常量、列或主变量 表达式

SUBSTRING_INDEX 的参数不可为用户定义的数据类型。

在下列的每一情况下,此函数返回 NULL:
  • source_string 为 NULL
  • delimiter 为 NULL
  • count = 零(0)。

如果该搜索在 source_string 中找到少于 count 个定界符,则返回值为整个 source_string

返回值与 source_string 的数据类型相同。

对于 source_stringcount 的符号决定返回的值是 source_string 中开头字符的子字符串还是收尾字符的子字符串:
  • 对于 N = count,返回的子字符串的最后的字符紧接在开头的字符的子字符串中那个定界符第 N 次出现的前面。
    例如函数表达式
    SUBSTRING_INDEX("www.ibm.com", ".", 2) 
    返回开头字符 www.ibm,因为 count > 0
  • 对于 N = count < 0,返回的子字符串中的第一个字符紧接在收尾字符的子字符串中那个定界符第 N 次出现之前。
    例如,函数表达式
    SUBSTRING_INDEX("www.ibm.com", ".", -2) 
    返回收尾字符 ibm.com,因为 count < 0

上述示例适用于诸如缺省的 U.S. English 语言环境这样的从左至右的语言环境,其中 count 的负值导致此函数从 source_string 返回收尾字符的子字符串,而 count 的正值导致此函数从 source_string 返回开头字符的子字符串。

在支持多字节字符集的语言环境中,返回值是 source_string 中的逻辑字符之中的顺序值。在诸如缺省的语言环境这样的语言环境中,返回值等同于字节位置,在此,第一个字节在位置 1