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 参考 » 系统对象 » 系统过程 » 按字母顺排序的系统过程列表

 

sa_split_list 系统过程

采用由分隔符分隔的值的字符串,并返回行集—每个值一行。

语法
sa_split_list( 
str
 [, delim ]
 [, maxlen ]
)
参数
  • str   使用此 LONG VARCHAR 参数指定包含要拆分的以 delim 分隔的值的字符串。

  • delim   使用此可选的 CHAR(10) 参数指定 str 中用来分隔值的分隔符。该分隔符可以是任何字符组成的字符串,最多为 10 个字节。如果未指定 delim,则缺省情况下使用逗号。

  • maxlen   使用此可选的 INTEGER 参数指定返回值的最大长度。例如,如果 maxlen 设置为 3,则结果集中的值将被截断为 3 个字符长度。如果指定 0(缺省值),值可以为任意长度。

结果集
列名 数据类型 说明
line_num INTEGER 行的顺序编号。
row_value LONG VARCHAR 来自字符串的值,如果需要将被截断为 maxlen
注释

sa_split_list 过程接受其值为分隔列表形式的字符串,并返回每行有一个值的结果集。这与 LIST 函数 [Aggregate] 执行的操作相反。如果字符串为以下形式,则 row_value 将返回空字符串:

输入字符串内的白空格有意义。如果分隔符是空格字符,输入字符串中的额外空格将导致结果集中出现额外的行。如果分隔符不是空格字符,则不会从结果集的值中裁剪输入字符串中的空格。

权限

副作用

另请参见
示例

以下查询返回黑色产品的列表。

SELECT list( Name )
  FROM Products 
  WHERE Color = 'Black';
list (Products.Name)
T 恤衫、棒球帽、太阳帽、短裤

在以下示例中,使用 sa_split_list 过程返回来自集合列表的原始结果集。

SELECT * 
  FROM sa_split_list( 'Tee Shirt,Baseball Cap,Visor,Shorts' );
line_num row_value
1 Tee Shirt
2 Baseball Cap
3 Visor
4 Shorts

以下示例为每一词返回一行。为避免返回其 row_value 为空字符串的行,必须指定 WHERE 子句。

SELECT *
  FROM sa_split_list( 'one||three|four||six|', '|' ) 
  WHERE row_value <> '';
line_num row_value
1 one
3 three
4 four
6 six

在以下示例中,将创建名为 ProductsWithColor 的过程。当调用 ProductsWithColor 过程时,它将使用 sa_split_list 来分析用户指定的颜色值,在 Products 表的 Color 列中查找,然后为与用户指定的颜色之一相匹配的每个产品返回名称、说明、大小和颜色。

以下过程调用的结果是所有白色或黑色产品的名称、说明、大小和颜色。

CREATE PROCEDURE ProductsWithColor( IN color_list LONG VARCHAR )
BEGIN
  SELECT Name, Description, Size, Color
  FROM Products
  WHERE Color IN ( SELECT row_value FROM sa_split_list( color_list ) )
END;
go

SELECT * from ProductsWithColor( 'white,black' );