字串函數

CLEM 中您可以對字串執行下列作業:

  • 比較字串
  • 建立字串
  • 存取字元

CLEM 中,字串是一對雙引號之間的任何字元序列 ("string quotes")。這裡所用的字元( 字元)可以是任何一個英數字元。這些字元已在 CLEM 表示式中使用反單引號並以 `<character>` 的形式宣告過,例如 `z``A``2`。如果字元超出範圍或為字串中的負指數,則會導致未定義的行為。

註: 在使用與不使用 SQL 回送的字串之間的對比可能產生存在尾部空格的不同結果。
表 1. CLEM 字串函數
函數 結果 說明
allbutfirst(N, STRING) 字串 傳回一個字串,其為移除了前 N 個字元的 STRING
allbutlast(N, STRING) 字串 傳回一個字串,其為移除了最後幾個字元的 STRING
alphabefore(STRING1, STRING2) 布林 用於檢查字串的按字母順序的排序。如果 STRING1STRING2 之前,則傳回 true 值。
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 是字元碼為字母的指定字串(常為欄位名稱)中的某個字元,則傳回 true 值。否則,此函數的傳回值為 0,例如 isalphacode(produce_num(1))
isendstring(SUBSTRING, STRING) 整數 如果字串 STRING 以子字串 SUBSTRING 結尾,則該函數將傳回字串 STRINGSUBSTRING 的整數下標。否則,此函數會傳回值 0。
islowercode(CHAR) 布林 如果 CHAR 是指定字串(通常為欄位名稱)中的某個小寫字母字元,則將傳回 true 值。否則,該函數的傳回值為 0,例如 islowercode(``) islowercode(country_name(2)) 均為有效表示式。
ismidstring(SUBSTRING, STRING) 整數 如果 SUBSTRINGSTRING 的子字串,但首字元或尾端字元與 STRING 不同,則該函數將傳回此子字串的起始下標。否則,此函數會傳回值 0。
isnumbercode(CHAR) 布林 如果指定字串(通常為欄位名稱)的字元為數字字元,則傳回 true 值。否則,此函數的傳回值為 0,例如 isnumbercode(product_id(2))
isstartstring(SUBSTRING, STRING) 整數 如果字串 STRING 以子字串 SUBSTRING 開頭,則該函數將傳回下標 1。否則,此函數的傳回結果為 0。
issubstring(SUBSTRING, N, STRING) 整數 搜尋字串 STRING(從其第 N 個字元開始)中等於字串 SUBSTRING 的子字串。找到之後,此函數會傳回整數下標,相符子字串在此處開始。否則,此函數會傳回值 0。如果未給定 N,則此函數預設為 1。
issubstring(SUBSTRING, STRING) 整數 搜尋字串 STRING(從其第 N 個字元開始)中等於字串 SUBSTRING 的子字串。找到之後,此函數會傳回整數下標,相符子字串在此處開始。否則,此函數會傳回值 0。如果未給定 N,則此函數預設為 1。
issubstring_count(SUBSTRING, N, STRING): 整數 傳回 STRING 中第 N 次出現的 SUBSTRING 的指標。如果 SUBSTRING 的出現次數少於 N 次,則傳回結果為 0。
issubstring_lim(SUBSTRING, N, STARTLIM, ENDLIM, STRING) 整數 此函數的功能與 issubstring 相同,但比對必須從下標 STARTLIM 或其之前開始,並且必須在下標 ENDLIM 或其之前結束。通過對任意一個引數提供 false,可以將 STARTLIMENDLIM 限制停用 - 例如,issubstring_lim(SUBSTRING, N, false, false,STRING) 函數功能等同於 issubstring
isuppercode(CHAR) 布林 如果字元是大寫字母字元,則傳回 true 值。否則,此函數的傳回值為 0,例如 isuppercode(``)isuppercode(country_name(2)) 均為有效表示式。
last(CHAR) 字串 傳回 STRING(長度至少為一個字元)的最後一個字元 CHAR
length(STRING) 整數 傳回字串 STRING 的長度,即字串內的字元數。
locchar(CHAR, N, STRING) 整數 用於識別符號欄位中的字元位置。此函數將在字串 STRING 中搜尋字元 CHAR(從 STRING 的第 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 布林 如果字串與指定型樣相符,則將傳回 true 值。型樣必須是字串文字,而不能是包含型樣的欄位名稱。問號 (?) 可以併入型樣以僅符合一個字元;(*) 符合零個以上字元。若要符合一個問號或星號文字(而不是使用它們作為萬用字元),可將反斜線 (\) 用作跳出字元。
replace(SUBSTRING, NEWSUBSTRING, STRING) 字串 在指定 STRING 中,用 NEWSUBSTRING 取代 SUBSTRING 的所有實例。
replicate(COUNT, STRING) 字串 傳回一個由原始字串指定個數的複本所構成的字串。
stripchar(CHAR,STRING) 字串 借助此函數,您可從某個字串 或欄位中移除指定字元。例如,您可以使用此函數從資料中移除多餘符號(如貨幣符號)以獲取一個簡單的數字或名稱。例如,通過語法 stripchar(`$`, 'Cost') 可以移除所有值中的美元符號並傳回一個新欄位。 附註:請務必使用單左引號來封裝指定的字元。
skipchar(CHAR, N, STRING) 整數 在字串 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,傳回的整數子字串表示 字元 第一次出現的位置。如果函數存在無效偏移(例如,某個偏移超出了字串長度),則函數傳回結果為 $null$
subscrs(N, STRING) CHAR 傳回輸入字串 STRING 的第 N 個字元 CHAR。此函數也可採用簡寫入形式 STRING(N)。例如,lowertoupper("name"(1)) 是有效的表示式。
substring(N, LEN, STRING) 字串 傳回從位於下標 N 的字元開始的字串 SUBSTRING,此子字串由字串 STRING LEN 個字元組成。
substring_between(N1, N2, STRING) 字串 傳回 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字串 可以輸入字串或字元,此函數將傳回一個類型相同項目,大寫字元將轉換為相應的小寫字元。 附註:指定字串時一定要用英文雙引號,而指定字元時一定要用反向單引號。簡單欄位名稱不應使用引號。