デリミターで区切った値の文字列を使用して、ローのセットを返します (各値に 1 つのロー)。
sa_split_list( str [, delim ] [, maxlen ] )
str 分割する値を含む文字列を指定する LONG VARCHAR パラメーター。各値は delim で区切られます。
delim str の値を分割するときに使用するデリミターを指定する任意の CHAR(10) パラメーター。デリミターは、任意の文字の文字列 (10 バイトまで) にできます。delim が指定されない場合、デフォルトでカンマが使用されます。
maxlen 戻り値の最大長を指定する任意の INTEGER パラメーター。たとえば、maxlen が 3 に設定されている場合、結果セットの値は 3 文字の長さにトランケートされます。0 (デフォルト) を指定すると、値は任意の長さで指定できます。
カラム名 | データ型 | 説明 |
---|---|---|
line_num | INTEGER | ローのシーケンス番号。 |
row_value | LONG VARCHAR | 文字列の値。必要に応じて、maxlen にトランケートされます。 |
sa_split_list プロシージャーは、デリミターで区切られた値のリストが含まれる文字列を受け取り、1 つのローに 1 つの値を入れた結果セットを返します。これは、LIST 関数 [集合] が実行するアクションの逆です。文字列が次の値の場合、row_value には空の文字列が返されます。
入力文字列内の空白スペースには意味があります。デリミターがスペース文字の場合、入力文字列に余分なスペースがあると結果セットの中に余分なローが入ります。デリミターがスペース文字ではない場合、入力文字列のスペースは結果セット内の値から削除されません。
なし。
なし。
次のクエリは、色が黒い製品のリストを返します。
SELECT list( Name ) FROM Products WHERE Color = 'Black'; |
list (Products.Name) |
---|
Tee Shirt,Baseball Cap,Visor,Shorts |
次の例では、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 |
次の例は、ワードごとに 1 つのローを返します。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' ); |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |