SUBSTR( ) 函数

从字符串中返回一个指定的子串。

语法

SUBSTRING(字符串开始位置长度

参数

名称 类型 描述
字符串 字符 从中提取子串的值。
开始 数值 子串的开始字符位置。
长度 数值

子串的字符数目。

如果长度是 0,则输出为空白。

输出

字符。

示例

基本示例

字面量字符输入

返回 "BCD":

SUBSTR("ABCDEF", 2, 3)

返回 "EF":

SUBSTR("ABCDEF", 5, 10)

分析结构化字符数据

返回 "189543":

SUBSTR("***189543***", 4, 6)

从包含采用“MM/DD/YYYY”格式的日期的字符域返回四位数的年份:

SUBSTR(DATE, 7, 4)

高级示例

增加域长度

使用 SUBSTR( ) 增加字符域的长度。增加域长度是您在联接或附加两个域之前可能需要执行的一项常见的协调任务。

下面的示例用空格填充 Product_Description 域,以创建长度为 50 个字符的计算域 Product_Description_Long

DEFINE FIELD Product_Description_Long COMPUTED SUBSTR(Product_Description, 1, 50)

备注

工作原理

SUBSTR( ) 函数返回字符串值中从开始指定的字符位置开始的字符。返回的字符数由长度指定。

SUBSTR( ) 如何处理空格

字符串值中的前导、后继或内部空格被视为字符。由开始长度捕捉的空格被包括在输出字符串中。

填充工作原理

如果长度值超过从开始位置到字符串末尾的字符数(包括末尾空格),则在输出字符串的右侧可能填充或不填充空格。

用空格填充

如果您在创建域的命令内使用 SUBSTR( ),则输出会被用空格填充。

在创建计算域时填充

基于长度为 24 个字符的物理域 Product_Description 创建长度为 50 个字符的计算域 Product_Description_Long

DEFINE FIELD Product_Description_Long COMPUTED SUBSTR(Product_Description, 1, 50)

在提取物理域时填充

将基于长度为 24 个字符的物理域 Product_Description 的、长度为 50 个字符的域 Product_Description_Long 提取至一个新表:

EXTRACT FIELDS SUBSTR(Product_Description, 1, 50) AS "Product_Description_Long" TO New_Table

不用空格填充

如果您在变量定义或表达式中使用 SUBSTR( ),则不会用空格填充输出。

在定义变量时不填充

基于 Product_Description 的域长度创建长度为 24 个字符的变量 v_prod_desc

ASSIGN v_prod_desc = SUBSTR(Product_Description, 1, 50)

说明

即使 SUBSTR( ) 指定 50 个字符的长度,输出也会被限制为 Product_Description 的域长度。

相关函数

SUBSTR( ) 和 SPLIT( ) 都从一个更长的源字符串返回一个数据段。

  • SUBSTR( ) 基于一个数值字符位置识别该段。
  • SPLIT( ) 基于一个分隔符识别该段。
ACL 脚本指南 14.1