INTNAND、INTNOR、INTNXOR、INTNNOT スカラー関数
これらのビット単位関数は、入力引数の整数値の「2 の補数」表現による演算を行い、対応する 10 進数の値を結果として戻します。
スキーマは SYSIBM です。
どの関数についても、プレースホルダー N は、関数で処理して戻す整数データ・タイプのバイト・サイズを表しています (表 2 を参照)。
| 関数 | 説明 | 結果の 2 の補数表現内のビットは、以下のとおりです。 |
|---|---|---|
| INTNAND | ビット単位 AND 演算を実行します。 | 両方の引数内の対応するビットが 1 である場合は、1 のみ。 |
| INTNOR | ビット単位 OR 演算を実行します。 | 両方の引数内の対応するビットがゼロでない限り、1。 |
| INTNXOR | ビット単位排他 OR 演算を実行します。 | 両方の引数内の対応するビットが同じでない限り、1。 |
| INTNNOT | ビット単位 NOT 演算を実行します。 | 引数内の対応するビットと反対のもの。 |
| N の値 | 関数で処理して戻すデータ・タイプ |
|---|---|
| 2 | SMALLINT |
| 4 | INTEGER |
| 8 | BIGINT |
- expression または expression1 または expression2
引数は、SMALLINT、INTEGER、BIGINT、DECFLOAT、DECIMAL、REAL、DOUBLE のいずれかのデータ・タイプの整数値でなければなりません。 入力引数が N に相当するデータ・タイプでない場合は、入力が N に相当するデータ・タイプに暗黙的にキャストされます。その結果、関数の入力として、N に相当するデータ・タイプの最大サイズ値を超えた値を渡すと、オーバーフローが発生する可能性があります (SQLSTATE=22003)。
引数のいずれかが NULL 値になる可能性がある場合、 結果も NULL 値になる可能性があります。 引数のいずれかが NULL 値の場合、その結果は NULL 値です。
データ・タイプ別の、および異なるハードウェア・プラットフォーム上での内部表記の相違が原因で、BIT 関数の結果および引数の内部表記を表示または比較するための関数 (HEX など) またはホスト言語構造の使用は、データ・タイプ依存であり、移植不可です。 データ・タイプおよびプラットフォームに依存せずに BIT 関数の結果および引数を表示または比較する方法は、実際の整数値を使用することです。
例
- 例 1: 2 バイトの SMALLINT の最大サイズを超える値を関数 INT2AND の入力として渡します。
select INT2AND(1234567,1) from SYSIBM.SYSDUMMY1 SQL0413N Overflow occurred during numeric data type conversion. SQLSTATE=22003 - 例 2: BIGINT の列 col1 と col2 に、それぞれ 137266 と 123825 という値が入っているとします。
SELECT INT8AND(col1,col2) from TAB1 returns the value 48 - 例 3: SMALLINT の列 col1 と col2 に、それぞれ 12 と 13 という値が入っているとします。
SELECT INT2AND(col1,col2) from TAB1 returns the value 12
