采用由分隔符分隔的值的字符串,并返回行集—每个值一行。
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' ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |