開発者ドキュメント

Oracle PL/SQL – BITANDファンクションの例

`BITAND`関数は、その入力とその出力をビットのベクトルとして扱い、出力は入力のビットごとのANDです。

基本的には以下のステップを実行します。

  1. 入力をバイナリに変換します.

  2. これらの2つの文字列に対して標準的なビット単位のAND演算を実行します.

  3. バイナリ結果を10進数に変換して返します.

1. BITANDの例

SELECT BITAND (12,10) FROM DUAL; -- output 8

1 1 0 0  = 12
1 0 1 0  = 10
-------------

1 0 0 0 = 8
DUALからBITAND(24,18)を選択します。 - 出力16

1 1 0 0 0 = 12
1 0 0 1 0 = 18
-------------
1 0 0 0 0 = 16

2.トランザクション状態を計算するためにBITANDを使用します.

2.1この例では、

txn

details`テーブルに、異なる銀行との支払いゲートウェイの取引詳細が含まれていると仮定します。ここで、 `txn

details`テーブルの

txn__status`カラムには単一の数値が含まれていますが、この値の各ビットにはいくつかの意味があります。

`txn__status`の意味は次のように考えました。

  1. バイナリ値001(10進数1)は、BankへのRequest Sentを意味します.

  2. バイナリ値010(10進数2)は、Response Receivedを意味します.

  3. バイナリ値100(10進数4)は、Error In In Responseを意味します.

CREATE TABLE txn__details
(
  TXN__ID number(5) primary key,
  BANK__NAME varchar2(20),
  TXN__STATUS number(1)
);

2.2サンプル値の挿入。

INSERT INTO txn__details VALUES (1,'ABC Bank',3);

INSERT INTO txn__details VALUES (2,'National Bank',0);

INSERT INTO txn__details VALUES (3,'Corporation Bank',1);

INSERT INTO txn__details VALUES (4,'ABC Bank',7);

2.3この例では

DECODE`関数を使用して、

txn__status`値の3つのビットのそれぞれに2つの値を与えます。ビットがオンの場合は1つ、オフの場合は1つです。


REQ

SENT`カラムの場合、BITANDはまず


txnstatus`と1(2進001)を比較します。重要なビット値だけが比較されるので、右端のビットに1を持つバイナリ値は正に評価され、1を返します。

偶数は0を返します。

DECODE`関数は、BITANDによって返された値を1と比較します。両方が1の場合、

REQ__SENT`の値は

YES ''であり、そうでない場合は

NO ”です。

他の2つの列

RESPONSE

RECEIVED`と


ERRORIN__RESPONSE`も同様に評価されます。

SELECT txn__id,bank__name,txn__status ,
  DECODE(BITAND(txn__status, 1), 1, 'YES', 'NO') "REQ__SENT",
  DECODE(BITAND(txn__status, 2), 2, 'YES', 'NO') "RESPONSE__RECEIVED",
  DECODE(BITAND(txn__status, 4), 4, 'YES', 'NO') "ERROR__IN__RESPONSE"
FROM txn__details;

出力

| =========================================== ========================== | TXN

ID | BANK

NAME | TXN

STATUS | REQ

SENT | RESPONSE

RECEIVED | ERROR

IN__RESPONSE | 1 | ABCバンク| 3 | YES | YES | NO

| 2 |国立銀行| 0 |いいえ|いいえ|いいえ

| 3 |法人銀行| 1 |はい|いいえ|いいえ

| 4 | ABCバンク| 7 |はい|はい|はい| ============================== =======================

参考文献

機能: – オラクルの公式ドキュメント]。

Bitwise AND wiki

10進変換]

リンク://タグ/バイナリ/[バイナリ]リンク://タグ/バイナリと/[バイナリと]

bitand


oracle


plsql

モバイルバージョンを終了