子字串
SUBSTRING 函數會傳回字串的子字串。
- 表示式
- 指定從中衍生結果之字串的表示式。
表示式 必須是任何內建數值、字串、
或布林
資料類型。 在評估函數之前,數值
或布林
引數會強制轉型為字串。 如需將數值
及布林
轉換為字串的相關資訊,請參閱 VARCHAR。 如果 表示式 是字串,則函數的結果會是字串。 如果它是圖形字串,則函數的結果是圖形字串。 如果它是二進位字串,則函數的結果是二進位字串。表示式 的子字串是 表示式的零或多個連續字元。 如果 表示式 是圖形字串,則字元是 DBCS 或 Unicode 圖形字元。 如果 表示式 是字串,則字元是可能包含一個以上位元組的字元。 如果 表示式 是二進位字串,則字元是位元組。
- 開始
- 此表示式指定結果第一個字元 (或位元組) 的 表示式 內的位置。 表示式必須傳回內建 BIGINT、INTEGER 或 SMALLINT 資料類型的值。 值 1 表示結果的第一個字元是 表示式的第一個字元。 負值或零值指出字串開頭之前的位置。 它也可能大於 表示式的長度屬性。 (可變長度字串的長度屬性是其長度上限。)
- 長度
- 指定結果子字串實際長度上限的表示式。 如果指定的話, length 必須是傳回內建 BIGINT、INTEGER 或 SMALLINT 資料類型值的表示式。 此值必須大於或等於 0。
如果明確指定 length ,則不會執行填補。
如果 表情 是固定長度字串,則 長度 的省略是 LENGTH (表情)- 開始 + 1 的隱含規格,這是從 表情的 開始 字元 (或位元組) 到最後一個字元 (或位元組) 的字元數 (或位元組)。 如果 表情 是可變長度字串,則省略 長度 是零或 LENGTH (表情)- 開始 + 1 的隱含規格 (以較大者為準)。 如果結果長度為零,則結果為空字串。
結果的資料類型取決於 表示式的資料類型:
| 表示式 的資料類型 | SUBSTRING 結果的資料類型 |
|---|---|
| CHAR 或 VARCHAR | VARCHAR |
| CLOB | CLOB |
| GRAPHIC 或 VARGRAPHIC | VARGRAPHIC |
| DBCLOB | DBCLOB |
| BINARY 或 VARBINARY | VARBINARY |
| BLOB | BLOB |
結果的長度屬性與 表示式的長度屬性相同。 (請記住,如果 表示式 的實際長度小於 start的值,則子字串的實際長度為零。)
如果任何引數可以是空值,則結果可以是空值; 如果任何引數是空值,則結果是空值。
結果的 CCSID 與 表示式的 CCSID 相同。
範例
- 從 PROJECT 表格中選取專案名稱 (PROJNAME) 以 'OPERATION' 單字開頭的所有列。
常數結尾的空格是必要的,以排除起始單字,例如 'OPERATIONS'。SELECT * FROM PROJECT WHERE SUBSTRING(PROJNAME,1,10) = 'OPERATION ' - 假設 FIRSTNAME 是 T1中以 Unicode UTF-8編碼的 VARCHAR (12) 直欄。 其中一個值是 6 個字元的字串 'J ü r g e n'。 當 FIRSTNAME 具有此值時:
傳回值 'Jü' (x '4AC3BC') 和 'Jo' (x '4AC3')。SELECT SUBSTRING(FIRSTNAME, 1,2), SUBSTR(FIRSTNAME, 1,2) FROM T1
