目的
16進整数バイト リテラル値を宣言します。
構文
- hexadecimal digits
- 16進数字の列(16進数字は0~9、a~f、またはA~Fの文字)。
- 1
- BYTEINTデータ型の整数。
- 2
- SMALLINTデータ型の整数。
- 4
- INTEGERデータ型の整数。1、2、4、8のどれも指定されていない場合、これがデフォルトです。
- 8
- BIGINTデータ型の整数。
ANSI準拠
16進数リテラルは、ANSI SQL:2011規格に対するTeradata拡張機能です。
定義
16進数リテラルは、0~16個の16進数字の列の先頭と末尾を単一引用符で囲んだものです。スペース文字と復帰改行文字は、リテラル内には使用できません。
データ型
Xの後に指定する修飾子によって、16進数リテラルのデータ型が指定されます。
16進数リテラルの形式 | データ型 | 16進数の最大桁数 |
---|---|---|
'hexadecimal digits'X 'hexadecimal digits'XI 'hexadecimal digits'XI4 |
INTEGER | 8 |
'hexadecimal digits'XI2 | SMALLINT | 4 |
'hexadecimal digits'XI1 | BYTEINT | 2 |
'hexadecimal digits'XI8 | BIGINT | 16 |
ルール
16進整数リテラルは、奇数個または偶数個の16進数字で表現されます。16進数リテラルは、右寄せです。例えば、値1000は、次のいずれを使用しても表現できます。
'3e8'X '0003e8'X '000003e8'X
16進数1000は'1000'xで、16*16*16=4096です。
'3e8'x=3*16*16+e*16+8で、eは14なので、1000になります。
リテラル1000はSMALLINT型ですが、前述の16進数定数はすべてINTEGER型なので注意してください。
例: 16進整数リテラル
次のテーブルについて考察します。
CREATE TABLE id_pairs (region_id INTEGER, region CHAR(20));
次の文を発行して、region列の値を検索します。このとき、region_idは16進数値の3e8です。
SELECT region FROM id_pairs WHERE region_id = '3e8'X;