子字串

SUBSTRING 函數會傳回字串的子字串。

讀取語法圖跳過視覺化語法圖SUBSTRING(表示式,開始,長度)SUBSTRING(表示式FROM開始 FOR長度)
表示式
指定從中衍生結果之字串的表示式。

表示式 必須是任何內建數值、字串、 變更開始或布林變更結束 資料類型。 在評估函數之前,數值 變更開始或布林變更結束 引數會強制轉型為字串。 如需將數值 變更開始及布林變更結束 轉換為字串的相關資訊,請參閱 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' 單字開頭的所有列。
      SELECT *
        FROM PROJECT
        WHERE SUBSTRING(PROJNAME,1,10) = 'OPERATION '
    常數結尾的空格是必要的,以排除起始單字,例如 'OPERATIONS'。
  • 假設 FIRSTNAME 是 T1中以 Unicode UTF-8編碼的 VARCHAR (12) 直欄。 其中一個值是 6 個字元的字串 'J ü r g e n'。 當 FIRSTNAME 具有此值時:
      SELECT SUBSTRING(FIRSTNAME, 1,2), SUBSTR(FIRSTNAME, 1,2)
        FROM T1
    傳回值 'Jü' (x '4AC3BC') 和 'Jo' (x '4AC3')。