Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 関数 » SQL 関数 (E ~ O)

 

LIST 関数 [集合]

カンマで区切られた値のリストを返します。

構文
LIST( 
[ DISTINCT ] string-expression
[, delimiter-string ]
[ ORDER BY order-by-expression [ ASC | DESC ], ... ] )
パラメータ
  • string-expression   文字列式。通常はカラム名です。カラムの各ローに対して、カンマで区切られたリストに値が追加されます。DISTINCT を指定すると、ユニークな値のみが追加されます。

  • delimiter-string   リスト項目のデリミタ文字列。デフォルト設定はカンマです。NULL 値または空の文字列を指定した場合は、デリミタはありません。delimiter-string は定数です。

  • order-by-expression   関数によって返された項目を並べ替えます。この引数の前にカンマは必要ありません。このため、delimiter-string を指定しない場合、使用が簡単になります。

    order-by-expression には整数リテラルを指定できません。ただし、整数リテラルを含む変数を指定できます。また、同じクエリ・ブロック内の複数の LIST 関数が、異なる order-by-expression の引数を使用することはできません。

戻り値

LONG VARCHAR

LONG NVARCHAR

備考

NULL 値は、リストに追加されません。LIST (X) は、グループの各ローの、NULL 以外のすべての X の値を (デリミタ付きで) 連結させて返します。グループ内に明確な X 値を持ったローが 1 つ以上存在しない場合、LIST(X) は空の文字列を返します。

LIST 関数は Window 関数として使用できませんが、Window 関数の入力には使用できます。

この関数は NCHAR の入力または出力をサポートしています。

標準と互換性
  • SQL/2003   ベンダ拡張。

参照

次の文は、値 487 Kennedy Court, 547 School Street を返します。

SELECT LIST( Street ) FROM Employees
WHERE GivenName = 'Thomas';

次の文は、従業員 ID をリストします。結果セットの各ローには、部門ごとの従業員 ID のカンマで区切られたリストが入っています。

SELECT LIST( EmployeeID )
FROM Employees
GROUP BY DepartmentID;
LIST( EmployeeID )
102,105,160,243,247,249,266,278,...
129,195,299,467,641,667,690,856,...
148,390,586,757,879,1293,1336,...
184,207,318,409,591,888,992,1062,...
191,703,750,868,921,1013,1570,...

次の文は、従業員の姓を基準に従業員 ID をソートします。

SELECT LIST( EmployeeID ORDER BY Surname ) AS "Sorted IDs"
FROM Employees
GROUP BY DepartmentID;

Sorted IDs '1751,591,1062,1191,992,888,318,184,1576,207,1684,1643,1607,1740,409,1507'

Sorted IDs
1013,191,750,921,868,1658,...
1751,591,1062,1191,992,888,318,...
1336,879,586,390,757,148,1483,...
1039,129,1142,195,667,1162,902,...
160,105,1250,247,266,249,445,...

次の文は、セミコロンで区切られたリストを返します。ORDER BY 句とリスト・セパレータの位置に注意してください。

SELECT LIST( EmployeeID, ';' ORDER BY Surname ) AS "Sorted IDs"
FROM Employees
GROUP BY DepartmentID;
Sorted IDs
1013;191;750;921;868;1658;703;...
1751;591;1062;1191;992;888;318;...
1336;879;586;390;757;148;1483;...
1039;129;1142;195;667;1162;902; ...
160;105;1250;247;266;249;445;...

次の文の前の文の違いに注意してください。次の文は、( Surname, ';' ) の複合ソート・キーによってソートされた従業員 ID のカンマで区切られたリストを返します。

SELECT LIST( EmployeeID ORDER BY Surname, ';' ) AS "Sorted IDs"
FROM Employees
GROUP BY DepartmentID;