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 函数 [Aggregate]

返回以逗号分隔的值列表。

语法
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 ) 返回一串组中每一行 X 的所有非 NULL 值(带分隔符)。如果组中没有任何一行具有明确的 X 值,则 LIST( X ) 返回空字符串。

LIST 函数不能用作窗口函数,但可用作窗口函数的输入。

此函数支持 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;