字符串函数

CLEM 中您可以对字符串执行以下操作:

  • 比较字符串
  • 创建字符串
  • 访问字符

CLEM 中,字符串是一对英文双引号( "string quotes")之间的一组字符序列。这里所用的字符( CHAR)可以是任何一个字母数字字符。这些字符已在 CLEM 表达式中使用反单引号并以 `<character>` 的形式声明过,例如 `z``A``2`。如果字符超出边界或为字符串中的负指数,则会导致未定义的行为。

注: 在使用与不使用 SQL 回送的字符串之间的对比可能生成存在尾部空格的不同结果。
表 1. CLEM 字符串函数
函数 结果 描述
allbutfirst(N, STRING) 字符串 返回 字符串 删除前 N 个字符的字符值。
allbutlast(N, STRING) 字符串 返回字符串 字符串 移除后 N 个字符后所生成的新字符串。
alphabefore(STRING1, STRING2) 布尔值 用于检查字符串的数字字母顺序。如果 STRING1STRING2 之前,则返回真值。
endstring(LENGTH, STRING) 字符串 从指定字符串中抽取后 N 个字符。如果字符串长度小于或等于指定长度,则字符串不发生改变。
hasendstring(STRING, SUBSTRING) 整数 此函数的功能等同于 isendstring(SUBSTRING, STRING) 。
hasmidstring(STRING, SUBSTRING) 整数 此函数的功能等同于 ismidstring(SUBSTRING, STRING) (嵌入的子串)。
hasstartstring(STRING, SUBSTRING) 整数 此函数的功能等同于 isstartstring(SUBSTRING, STRING)
hassubstring(STRING, N, SUBSTRING) 整数 此函数的功能等同于 issubstring(SUBSTRING, N, STRING),其中 N 的缺省值为 1。
count_substring(STRING, SUBSTRING) 整数 返回字符串中指定字符串出现的次数。例如, count_substring("foooo.txt", "oo") 返回结果为 3。
hassubstring(STRING, SUBSTRING) 整数 此函数的功能等同于 issubstring(SUBSTRING, 1, STRING),其中 N 的缺省值为 1。
isalphacode(CHAR) 布尔值 如果 CHAR 是字符代码为字母的指定字符串(常为字段名)中的某个字符,则返回真值。否则,此函数的返回值为 0,例如 isalphacode(produce_num(1))
isendstring(SUBSTRING, STRING) 整数 如果字符串 字符串 以子串 SUBSTRING 结尾,则该函数将返回字符串 字符串 中子串 SUBSTRING 的整数下标。否则,此函数将返回值 0。
islowercode(CHAR) 布尔值 如果 CHAR 是指定字符串(通常为字段名)中的某个小写字母字符,则将返回真值。否则,该函数的返回值为 0,例如 islowercode(``) islowercode(country_name(2)) 均为有效表达式。
ismidstring(SUBSTRING, STRING) 整数 如果 SUBSTRING字符串 的子串,但首字符或尾端字符与 字符串 不同,则该函数将返回此子串的起始下标。否则,此函数将返回值 0。
isnumbercode(CHAR) 布尔值 如果指定字符串(通常为字段名)的 CHAR 为数字字符,则返回真值。否则,此函数的返回值为 0,例如 isnumbercode(product_id(2))
isstartstring(SUBSTRING, STRING) 整数 如果字符串 字符串 以子串 SUBSTRING 开头,则该函数将返回下标 1。否则,此函数的返回结果为 0。
issubstring(SUBSTRING, N, STRING) 整数 从字符串 字符串 中搜索(从第 N 个字符开始)等于 SUBSTRING 的子串。如果找到子串,则该函数返回匹配子串的起始整数下标。否则,此函数将返回值 0。如果未指定 N,此函数的默认值为 1。
issubstring(SUBSTRING, STRING) 整数 从字符串 字符串 中搜索(从第 N 个字符开始)等于 SUBSTRING 的子串。如果找到子串,则该函数返回匹配子串的起始整数下标。否则,此函数将返回值 0。如果未指定 N,此函数的默认值为 1。
issubstring_count(SUBSTRING, N, STRING): 整数 返回 字符串 中第 N 次出现的 SUBSTRING 的索引。如果 SUBSTRING 的出现次数少于 N 次,则返回结果为 0。
issubstring_lim(SUBSTRING, N, STARTLIM, ENDLIM, STRING) 整数 此函数的功能与 issubstring 相同,但匹配必须从下标 STARTLIM 或其之前开始,并且必须从下标 ENDLIM 或其之前结束。通过对任意一个参数提供假值,可以将 STARTLIMENDLIM 约束禁用 - 例如,issubstring_lim(SUBSTRING, N, false, false, STRING) 函数功能等同于 issubstring
isuppercode(CHAR) 布尔值 如果 CHAR 是大写字母字符,则返回真值。否则,此函数的返回值为 0,例如 isuppercode(``)isuppercode(country_name(2)) 均为有效表达式。
last(CHAR) 字符串 返回 字符串(长度至少为一个字符)的最后一个字符 CHAR
length(STRING) 整数 返回字符串 字符串 的长度,即字符串内的字符数。
locchar(CHAR, N, STRING) 整数 用于标识号字段中的字符位置。此函数将在字符串 字符串 中搜索字符 CHAR(从 字符串 的第 N 个字符开始搜索)。此函数的返回值表示(从 N 开始)找到字符的位置。如果未找到字符,则函数返回结果为 0。如果此函数存在无效偏移 (N)(例如,某个偏移超出了字符串长度),则函数返回结果为 $null$。 例如,locchar(`n`, 2, web_page) 在名为 web_page 的字段中从第二个字符开始搜索字符 `n`:请用反单引号将指定字符引起。
locchar_back(CHAR, N, STRING) 整数 locchar 函数类似,所不同的是搜索反向进行并且从第 N 个字符开始。例如,locchar_back(`n`, 9, web_page) 将从 web_page 的第 9 个字符开始搜索并且是从后向前移动搜索。如果此函数存在无效偏移(例如,某个偏移超出了字符串长度),则函数返回结果为 $null$。理想情况下,您将 locchar_back length( <field >) 函数结合使用,以便动态地使用字段当前值的长度。例如 locchar_back(`n`, (length(web_page)), web_page)
lowertoupper(CHAR) lowertoupper (STRING) CHAR字符串 可以输入字符串或字符,此函数将返回一个类型相同项,小写字符将转换为相应的大写字符。例如,lowertoupper(`a`)lowertoupper("My string")lowertoupper(field_name(2)) 均为有效表达式。
matches 布尔值 如果字符串与指定模式相匹配,则将返回真值。模式必须是字符串字符,而不能是包含模式的字段名。问号(?)可以包含在模式中以便匹配某一字符,星号(*)可以匹配零个或多个字符。要匹配文字问号或星号(而不是将其用作通配符),可以使用反斜杠(\)作为转义符号。
replace(SUBSTRING, NEWSUBSTRING, STRING) 字符串 在指定 字符串 中,用 NEWSUBSTRING 替换 SUBSTRING 中的所有示例。
replicate(COUNT, STRING) 字符串 返回一个由原始字符串指定个数的复本所构成的字符串。
stripchar(CHAR,STRING) 字符串 借助此函数,您可从某个字符串 或字段中移除指定字符。例如,您可以使用此函数从数据中移除多余符号(如货币符号)以获取一个简单的数值或名称。例如,通过语法 stripchar(`$`, 'Cost') 可以移除所有值中的美元符号并返回一个新字段。 :请用反单引号将指定字符引起。
skipchar(CHAR, N, STRING) 整数 在字符串 字符串 中搜索除 CHAR 以外的字符(从第 N 个字符开始搜索)。此函数返回一个表示发现子串位置的整数子串,如果从第 N 个位置开始的每个字符是 CHAR,则返回 0。如果此函数存在无效偏移(例如,某个偏移超出了字符串长度),则函数返回结果为 $null$locchar 函数经常与 skipchar 结合使用以确定 N(开始搜索字符串的位置)的值。例如 skipchar(`s`, (locchar(`s`, 1, "MyString")), "MyString")
skipchar_back(CHAR, N, STRING) 整数 skipchar 函数类似,所不同的是搜索 反向 进行并且从第 N 个字符开始。
startstring(LENGTH, STRING) 字符串 从指定字符串中抽取前 N 个字符。如果字符串长度小于或等于指定长度,则字符串不发生改变。
strmember(CHAR, STRING) 整数 等同于 locchar(CHAR, 1, STRING) 函数。此函数返回整数子串或 0,返回的整数子串表示 CHAR 第一次出现的位置。如果函数存在无效偏移(例如,某个偏移超出了字符串长度),则函数返回结果为 $null$
subscrs(N, STRING) CHAR 返回输入字符串 字符串 的第 N 个字符 CHAR。此函数也可采用简写形式 STRING(N)。例如,lowertoupper("name"(1)) 是有效的表达式。
substring(N, LEN, STRING) 字符串 返回从位于下标 N 的字符开始的字符串 SUBSTRING,此子串由字符串 字符串 LEN 个字符组成。
substring_between(N1, N2, STRING) 字符串 返回 字符串 的子串,该字符串从下标 N1 开始并结束于下标 N2
trim(STRING) 字符串 移除指定字符串的前导和尾部空格。
trim_start(STRING) 字符串 移除指定字符串的前导空格。
trimend(STRING) 字符串 移除指定字符串的尾部空格。
unicode_char(NUM) CHAR 输入必须是十进制值,而不能是十六进制值。返回 Unicode 值为 NUM 的字符。
unicode_value(CHAR) NUM 返回 CHAR 的 Unicode 值。
uppertolower(CHAR) uppertolower (STRING) CHAR字符串 可以输入字符串或字符,此函数将返回一个类型相同项,大写字符将转换为相应的小写字符。 :指定字符串时一定要用英文双引号,而指定字符时一定要用反向单引号。简单字段名不必使用引号。