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 システム・プロシージャ

デリミタで区切った値の文字列を使用して、ローのセットを返します (各値に 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' );