字串函數
在 CLEM 中您可以對字串執行下列作業:
- 比較字串
- 建立字串
- 存取字元
在 CLEM 中,字串是一對雙引號之間的任何字元序列 ("string quotes")。這裡所用的字元( 字元)可以是任何一個英數字元。這些字元已在 CLEM 表示式中使用反單引號並以 `<character>` 的形式宣告過,例如 `z`、 `A` 或 `2`。如果字元超出範圍或為字串中的負指數,則會導致未定義的行為。
註: 在使用與不使用 SQL 回送的字串之間的對比可能產生存在尾部空格的不同結果。
| 函數 | 結果 | 說明 |
|---|---|---|
allbutfirst(N, STRING) |
字串 | 傳回一個字串,其為移除了前 N 個字元的 STRING。 |
allbutlast(N, STRING) |
字串 | 傳回一個字串,其為移除了最後幾個字元的 STRING。 |
alphabefore(STRING1, STRING2) |
布林 | 用於檢查字串的按字母順序的排序。如果 STRING1 在 STRING2 之前,則傳回 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 結尾,則該函數將傳回字串 STRING 中 SUBSTRING 的整數下標。否則,此函數會傳回值 0。 |
islowercode(CHAR) |
布林 | 如果 CHAR 是指定字串(通常為欄位名稱)中的某個小寫字母字元,則將傳回 true 值。否則,該函數的傳回值為 0,例如 islowercode(``) 和 islowercode(country_name(2)) 均為有效表示式。 |
ismidstring(SUBSTRING, STRING) |
整數 | 如果 SUBSTRING 是 STRING 的子字串,但首字元或尾端字元與 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,可以將 STARTLIM 或 ENDLIM 限制停用 - 例如,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 或字串 | 可以輸入字串或字元,此函數將傳回一個類型相同項目,大寫字元將轉換為相應的小寫字元。 附註:指定字串時一定要用英文雙引號,而指定字元時一定要用反向單引號。簡單欄位名稱不應使用引號。 |