すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:SUBSTR

最終更新日:Oct 23, 2025

文字列 str の start_position から始まる長さ length の部分文字列を返します。

構文

STRING SUBSTR(STRING <str>, BIGINT <start_position>[, BIGINT <length>])

パラメーター

  • str: 必須。STRING 型の値。入力値が BIGINT、DECIMAL、DOUBLE、または DATETIME 型の場合、計算前に暗黙的に STRING 型に変換されます。

  • start_position: 必須。BIGINT 型の値。関数の動作は start_position の値によって異なります。

    start_position の値

    説明

    1

    デフォルトでは、部分文字列は最初の文字から始まります。

    0

    負の数

    デフォルトでは、部分文字列は最後の文字から始まります。start_position の値が -length (length は文字列 str の長さ) より小さい場合:

    • 空の文字列が返されます。

    • SET odps.sql.bigquery.compatible=true; コマンドを実行して BigQuery 互換モードを有効にすると、部分文字列は最初の文字から始まります。

  • length: 任意。BIGINT 型の値。このパラメーターは、部分文字列の長さを指定します。このパラメーターを指定しない場合、関数は開始位置から str 文字列の末尾までの部分文字列を返します。

    • length の値が 0 の場合、空の文字列が返されます。

    • length の値が 0 未満の場合、空の文字列が返されます。ただし、次のフラグが有効になっている場合は、エラーが返されます。

      • SETPROJECT odps.sql.bigquery.compatible=true; コマンドを実行して BigQuery 互換モードを有効にすると、エラーが返されます。

戻り値

この関数は STRING 型の値を返します。次のルールが適用されます。

  • str の型が STRING、BIGINT、DECIMAL、DOUBLE、または DATETIME でない場合、エラーが返されます。

  • length の型が BIGINT でない場合、エラーが返されます。

  • str、start_position、または length が NULL の場合、関数は NULL を返します。

例

  • 例 1: 文字列 abc から、指定された位置から始まる指定された長さの部分文字列を返します。コマンド例:

    -- bc が返されます。
    SELECT SUBSTR('abc', 2);
    
    -- b が返されます。
    SELECT SUBSTR('abc', 2, 1);
    
    -- bc が返されます。
    SELECT SUBSTR('abc', -2, 2);
  • 例 2: 入力パラメーターが NULL です。コマンド例:

    -- NULL が返されます。
    SELECT SUBSTR('abc', null);
  • 例 3: BigQuery 互換モードでは、start_position の値が 0 の場合、結果は値が 1 の場合と同じになります。

    -- apple が返されます。
    SET odps.sql.bigquery.compatible=TRUE;  
    SELECT SUBSTR('apple', 0);
    
    -- これは次の文と同じです:
    SELECT SUBSTR('apple', 1);
  • 例 4: BigQuery 互換モードでは、start_position の値が -length (length は文字列 str の長さ) より小さい場合、結果は開始位置が 1 の場合と同じになります。

    -- apple が返されます。
    SET odps.sql.bigquery.compatible=TRUE;
    SELECT SUBSTR('apple', -6);
    
    -- これは次の文と同じです:
    SELECT SUBSTR('apple', 1);
  • 例 5: BigQuery 互換モードでは、length の値が 0 未満の場合、エラーが返されます。

    -- 次のエラーが返されます: FAILED: ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: SQL Runtime Unretryable Error: ODPS-0121095:Invalid argument - in function substr/substring, unsupported length value -1
    SET odps.sql.bigquery.compatible=TRUE;
    SELECT SUBSTR('apple',1,-1);

関連関数

SUBSTR は文字列関数です。文字列の検索および変換関数の詳細については、「文字列関数」をご参照ください。