字符串函数,它从任何数据类型的数据(包括流数据)中返回一个子字符串。
SUBSTRING(string-expression,start[,length])
SUBSTRING(string-expression FROM start [FOR length])
{fn SUBSTRING(string-expression,start[,length])}
string-expression
- 要从中派生子字符串的字符串表达式。表达式,可以是列名、字符串文字或另一个标量函数的结果。字段可以是任何数据类型:字符串(例如 CHAR
或 VARCHAR
)、数字或数据类型为 %Stream.GlobalCharacter
或 %Stream.GlobalBinary
的数据流字段。start
- 一个整数,它指定 string-expression
中开始子字符串的位置。 string-expression
中的第一个字符位于位置 1
。如果起始位置高于字符串的长度,则 SUBSTRING
返回一个空字符串 。如果起始位置小于 1
(零或负数),则子字符串从位置 1
开始,但子字符串的长度会减少起始位置。length
- 可选 — 一个整数,指定要返回的子字符串的长度。如果未指定长度,则默认返回字符串的其余部分。SUBSTRING
接受任何数据类型的数据并将该数据的子字符串作为数据类型 %String
返回。当然,子字符串可以是作为字符串返回的完整数据值。
start
的值控制子字符串的起点:
start
为 1
,则子字符串从 string-expression
的开头开始。start
大于 1
,则子字符串从 string-expression
开头计数的那个字符位置开始。start
小于 1
,则子字符串从 string-expression
的开头开始,但 length
的值会减少相应的量。因此,如果 start
为 0
,则 length
的值减 1
;如果 start
为 –1
,则 length
的值减 2
。length
的值控制子字符串的大小:
length
为正值(1
或更大),则子字符串在起始位置右侧结束 length
个字符。 (如果起始编号小于 1
,此有效长度可能会减少。)NULL
。SQLCODE –140
错误。SUBSTRING
可用作 ODBC
标量函数(使用大括号语法)或 SQL
通用函数。
如果 string-expression
是任何 %String
数据类型,则 SUBSTRING
返回值是与 string-expression
数据类型相同的数据类型。这允许 SUBSTRING
使用特殊编码处理用户定义的字符串数据类型。
如果 string-expression
不是 %String
数据类型(例如,%Stream.GlobalCharacter
),则 SUBSTRING
返回值为 %String
。
如果任何 SUBSTRING
参数值为 NULL
,则 SUBSTRING
返回 NULL
。
与大多数 SQL 字符串函数不同,SUBSTRING
可以与流数据一起使用。字符串表达式可以是数据类型为 %Stream.GlobalCharacter
或 %Stream.GlobalBinary
的字段。 SUBSTRING
将提取的流数据子集作为 %String
数据类型返回。如果 start=1
并且省略了 length
,则 SUBSTRING
以 %String
形式返回完整的流数据值。
因此,SUBSTRING
可用于将字符流数据作为字符串提供给其他 SQL 字符串函数。以下示例使用 SUBSTRING
允许 CHARINDEX
在包含 DNA
核苷酸序列的 %Stream.GlobalCharacter
字段的前 1000
个字符中搜索子字符串 TTAGGG
的第一次出现,并将该位置作为整数返回:
SELECT CHARINDEX('TTAGGG',SUBSTRING(DNASeq,1,1000)) FROM Sample.DNASequences
SUBSTRING
从从字符串表达式的开头算起的起始位置提取子字符串。 SUBSTR
可以从字符串的开头或结尾提取子字符串。SUBSTRING
可以与流数据一起使用; SUBSTR
不能与流数据一起使用。此示例返回字符串“forward”
:
SELECT {fn SUBSTRING( 'forward pass',1,7 )} AS SubText
forward
此示例返回字符串“pass”
:
SELECT {fn SUBSTRING( 'forward pass',9,4 )} AS SubText
pass
以下示例返回每个名称的前四个字符:
SELECT Name,SUBSTRING(Name,1,4) AS FirstFour
FROM Sample.Person
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。