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

ビット文字列を取得し、文字列で各ビットのローを返します。デフォルトで、1 のビット値を持つローのみが返されます。

構文
sa_get_bits( bit_string [ , only_on_bits ] )
引数
  • bit_string   ビットを取得する対象のビット文字列を指定する LONG VARBIT パラメータ。bit_string パラメータが NULL の場合、ローは返されません。

  • only_on_bits   オンのビット (値が 1 のビット) を持つローのみを返すかどうかを指定する任意の BIT パラメータ。1 (デフォルト) を指定すると、オンのビットを持つローのみを返します。0 を指定すると、ビット文字列のすべてのビットのローを返します。

結果セット
カラム データ型 説明
bitnum UNSIGNED INT このローで記述されるビットの位置。たとえば、ビット文字列の最初のビットは、1 の bitnum です。
bit_val BIT bitnum 位置にあるビットの値。only_on_bits が 1 に設定されている場合、この値は常に 1 です。
備考

sa_get_bits システム・プロシージャは、ビット文字列を復号化し、ビットの値を示すビット文字列の各ビットについて 1 つのローを返します。only_on_bits が 1 (デフォルト) または NULL の場合、オンのビットに対応するローのみが返されます。最適化によって、オンのビットがいくつかある長いビット文字列の場合に、効率的に処理できます。only_on_bits が 0 に設定されている場合、ビット文字列の各ビットについて 1 つのローが返されます。

たとえば、文 CALL sa_get_bits( '1010' ) は、ビット文字列の位置 1 と 3 に ON のビットを示す、次の結果セットを返します。

bitnum bit_val
1 1
3 1

sa_get_bits システム・プロシージャは、ビット文字列を関係に変換するときに使用できます。これは、ビット文字列をテーブルに結合するときや、1 つのバイナリ値としてではなく、結果セットとしてビット文字列を取得するときに使用します。大量に 0 ビットがある場合、取得する必要はないため、ビット文字列を結果セットとして取得する方が効率的です。

パーミッション

なし

関連する動作

なし

参照

次の例は、sa_get_bits システム・プロシージャを使用して、整数のセットを文字列としてコード化してから、ジョインで使用するときに復号化する方法を示します。

CREATE VARIABLE @s_depts LONG VARBIT;

SELECT  SET_BITS( DepartmentID )
 INTO @s_depts
 FROM Departments
 WHERE DepartmentName like 'S%';

SELECT *
 FROM sa_get_bits( @s_depts ) B 
  JOIN Departments D ON B.bitnum = D.DepartmentID;