下表展示了 ABAP CDS 中 CDS 视图中字符串的 SQL 函数,以及对参数的要求。这些函数的含义可以在字符串的 SQL 函数下找到。
功能 | 有效的参数类型 | 结果类型 |
CONCAT(arg1, arg2) | 见下文 | 如果参数的类型为 SSTRING,则为 SSTRING,否则为带有结果长度的 CHAR。 |
CONCAT_WITH_SPACE(arg1, arg2, space) | arg1、arg2:见下文 space:大于 0 且小于或等于 1331 的正数字文字 | 如果参数的类型为 SSTRING,则为 SSTRING,否则为带有结果长度的 CHAR。 |
INSTR (arg, sub) | arg:见下文 sub:非空数字文字 | INT4 |
LEFT(arg, len) | arg:见下文 len:大于 0 且小于或等于 1333 的正数字文字 | 如果 arg 的类型为 SSTRING,则为 SSTRING,否则为长度为 len 的 CHAR |
LENGTH(arg) | 见下文 | INT4 |
LPAD (arg, len, src) | arg:见下文 len:大于 0 且小于或等于 1333 的正数字字面量 src:字符字面量 | 如果 arg 的类型为 SSTRING,则为 SSTRING,否则为长度为 len 的 CHAR |
LTRIM(参数,字符) | arg:见下文 char:长度为 1 的字符字面量 | 如果 arg 的类型为 SSTRING,则为 SSTRING,否则为长度为 arg 的 CHAR。 |
REPLACE(arg1, arg2, arg3) | 见下文 | 如果 arg1 或 arg3 具有 SSTRING 类型,则为 SSTRING,否则为具有最大可能结果长度的 CHAR。 |
RIGHT (arg, len) | arg:见下文 len:大于 0 且小于或等于 1333 的正数字文字 | 如果 arg 的类型为 SSTRING,则为 SSTRING,否则为长度为 len 的 CHAR |
RPAD (arg, len, src) | arg:见下文 len:大于 0 且小于或等于 1333 的正数字字面量 src:字符字面量 | 如果 arg 的类型为 SSTRING,则为 SSTRING,否则为长度为 len 的 CHAR |
RTRIM(参数,字符) | arg:见下文 char:长度为 1 的字符字面量 | 如果 arg 的类型为 SSTRING,则为 SSTRING,否则为长度为 arg 的 CHAR。 |
SUBSTRING (arg, pos, len) | arg:见下文 pos 和 len:不等于零的正数字文字 | SSTRING,如果 arg 的类型为 SSTRING,否则长度至少为 len 的 CHAR 或 NUMC |
SQL函数 | 结果 | ABAP CDS | OPENSQL |
CONCAT(arg1, arg2) | arg1 和 arg2 中字符串的链接。arg1、arg2 和结果中的尾随空白将被忽略。结果的最大长度为 1333。 | X | X |
CONCAT_WITH_SPACE(arg1, arg2, space) | arg1 和 arg2 中的字符串连接与 CONCAT 一样。在 arg1 和 arg2 之间插入space中指定的space数。结果的最大长度为 1333。 | X | - |
INSTR (arg, sub) | arg 中 sub 中第一次出现的字符串的位置(区分大小写)。arg 尊重前导space并忽略尾随space。sub 尊重所有space。sub 必须至少包含一个字符。如果未找到任何匹配项,则结果为 0。 | X | - |
LEFT(arg, len) | 长度为 len 的字符串与 arg 的 len 左字符(忽略尾随space)。len 的值不能大于 arg 的长度。 | X | - |
LENGTH(arg) | arg 中忽略尾随space的字符数。 | X | X |
LPAD (arg, len, src) | 长度为 len 的字符串,带有 arg 的右对齐内容,没有尾随space,其中扩展字符串产生的前导space被参数 src 中的字符REPLACE(尊重所有space)。保留 arg 的尾随空白。如果需要的字符多于 src 中存在的字符,则重复使用 src 的内容。如果 len 小于 arg 的长度,则在右侧截断。如果 src 为空且 len 大于 arg 的长度,则 arg 保持不变。 | X | X |
LTRIM(参数,字符) | 包含 arg 内容的字符串,其中删除了所有尾随空白以及与 char 中的字符匹配的所有前导字符。char 中的空白很重要。 | X | X |
REPLACE(arg1,arg2,arg3) | 字符串 arg1,其中 arg2 的所有实例都替换为 arg3 中的内容。字母的替换区分大小写。所有参数中的尾随space都将被忽略。结果的最大长度为 1333。 | X | X |
RIGHT (arg, len) | 长度为 len 的字符串与 arg 的 len 右边字符(忽略尾随space)。len 的值不能大于 arg 的长度。 | X | X |
RPAD (arg, len, src) | 长度为 len 的字符串,带有 arg 的左对齐内容,没有尾随space,并且其中由扩展字符串产生的尾随space被参数 src 中的字符替换(尊重所有space)。保留 arg 的尾随空白。如果需要的字符多于 src 中存在的字符,则重复使用 src 的内容。如果 len 小于 arg 的长度,则在右侧截断。如果 src 为空且 len 大于 arg 的长度,则 arg 保持不变。 | X | - |
RTRIM(参数,字符) | 包含 arg 内容的字符串,其中删除了所有尾随空白以及与 char 中的字符匹配的所有尾随字符。char 中的空白很重要。 | X | X |
SUBSTRING (arg, pos, len) | 长度为 len 的位置 pos 的 arg 子串。必须指定 pos 和 len,以便子字符串在 arg 内。 | X | X |
- 合适类型的文字。文字可以以域名称作为前缀。
- 当前 CDS 视图的数据源 data_source 的合适字段。
- 标识数据源 data_source 的合适字段的路径表达式。
- 从参数列表parameter_list 输入参数。
- 以下预定义函数和表达式(如果它们返回匹配类型):
- 其他预定义的 SQL 函数
- 算术表达式
- 使用 CAST 进行类型修改
在指定显式长度 len 的函数中,结果的实际长度在 CDS 视图激活时定义,并且至少与 len 一样长。
在除 LPAD 和 RPAD 之外的所有函数中,在实际处理之前删除所有参数的尾随空白,并在返回操作之前删除结果的尾随空白。在 LPAD 和 RPAD 中,参数 src 的尾随空格被保留。
原文链接:https://blog.csdn.net/huanglin6/article/details/82627757