SUBSTRING 和 SUBSTR 函数
可以使用 SUBSTRING 和 SUBSTR 函数返回部分字符串。指定开始位置和长度(可选)来
确定函数返回字符串的哪部分。
限制: 这两个函数在参数中的使用测量单位是字节,而非逻辑字符。这在缺省语言环境和另
一个单字节语言环境中都不重要,但是您不能在代码集与其存储长度不同的逻辑字符的语言环
境中调用 SUBSTRING 或 SUBSTR。
SUBSTRING 函数
可以使用 SUBSTRING 函数来返回字符串的某部分。指定开始位置和长度(可选)来确定
返回字符串的哪部分。可以指定正数或负数作为开始位置。开始位置 1 指定 SUBSTRING 函
数从字符串的第一个位置开始。当开始位置为(0)或负数时,SUBSTRING 函数从字符串
的开头开始向后计数。
下列查询显示 SUBSTRING 函数的一个示例,其返还查询返回的任何 sname 列值的前四个
字符。在本示例中,SUBSTRING 函数从字符串的开头开始,返回开始位置开始的四个字
符。
图: 查询
图: 查询结果

在下列查询中,SUBSTRING 函数指定开始位置 6,但未指定长度。函数返回从字符串的第
六个位置开始到字符串结尾的字符串。
图: 查询
图: 查询结果
在下列查询中,SUBSTRING 函数只返回查询返回的任何 sname 列值的第一个字符。对
于 SUBSTRING 函数,开始位置 -2 表示从字符的开始位置向后数三个位置(0 、-1 、-2)
(对于开始位置 0,函数从字符串的开始位置向后数一个位置)。
图: 查询
图: 查询结果
SUBSTR 函数
SUBSTR 函数的作用于 SUBSTRING 函数相同,但两个函数的语法有区别。
要返回字符串的一部分,指定开始位置和长度(可选)来确定 SUBSTR 函数返回子串的哪
个部分。为 SUBSTR 函数指定的开始位置可以是正数,也可以是负数。然而,SUBSTR 函
数用与 SUBSTRING 函数不同的方式处理开始位置中的负数。当开始位置是负数时,
SUBSTR 函数从字符串的末尾开始向后计数,这取决于字符串的长度,而不是字符串包含
词或可视字符的长度。SUBSTR 函数将开始位置中的零(0)或 1 识别为字符串中的第一个
位置。
下列查询显示包括负数作为开始位置的 SUBSTR 函数的一个示例。假定开始位置为 -15,
那么 SUBSTR 函数从字符串末尾开始向后数 15 个位置来找到开始位置,然后返回下五个
字符。
图: 查询
图: 查询结果

要使用负数作为开始位置,需要指定求出的长度值。sname 列被定义为 CHAR(15),因此接
受类型为 sname 的参数的 SUBSTR 函数可以将开始位置 0 、1 或 -15 用于函数来返回从字
符串的第一个位置开始的字符串。
下列查询返回与图 1相同的结果。
图: 查询

LPAD 函数
使用 LPAD 函数返回已用重复次数达到必要次数的字符序列在左边填充或截断的字符串的
副本,这取决于字符串中填充部分的指定长度。指定源字符串、要返回的字符串的长度和
要用来填充的字符串。
源字符串和用来填充的字符串的数据类型可以是能转换为 VARCHAR 或 NVARCHAR
的任何数据类型。
下列查询显示具有指定长度 21 个字节的 LPAD 函数的一个示例。由于源字符串长度为 15
个字节(sname 被定义为 CHAR(15)),所以 LPAD 函数填充字符串左边的前六个位置。
图: 查询


RPAD 函数
所以 RPAD 函数返回已用重复次数达到必要次数的字符序列在右边填充或截断的字符串的
副本,这取决于字符串中填充部分的指定长度。指定源字符串、要返回的字符串的长度和
要用来填充的字符串。
源字符串和用来填充的字符串的数据类型可以是能转换为 VARCHAR 或 NVARCHAR
的任何数据类型。
下列查询显示具有指定长度 21 个字节的 RPAD 函数的一个示例。由于源字符串长度为 15
个字节(sname 被定义为 CHAR(15)),所以 LPAD 函数填充字符串右边的前六个位置。
图: 查询
图: 查询结果
除了这些函数之外,LTRIM 和 RTRIM 函数可以返回删除其字符串参数中指定前导或尾随
填充字符的值,并且 ASCII 函数可以返回在其字符串参数中第一个字符的 ASCII 字符集
中代码点的数字值。这些内置函数对字符串值的操作在 GBase 8s SQL 指南:语法中进行了
描述。




