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 リファレンス » SQL の使用 » SQL 言語の要素 » 定数

 

バイナリ・リテラル

バイナリ・リテラルは、0 ~ 9 の数字、大文字と小文字の A ~ F で構成される 16 進文字です。バイナリ・データをリテラルとして入力する場合は、データの前に 0x (1 つのゼロと 1 つの後続文字) を指定します。このプレフィクスの右側には、偶数の桁数を指定します。たとえば、39 の 16 進数は 0027 であるため、0x0027 のように表されます。

0x12345678 の形式の 16 進定数は、バイナリ文字列として処理されます。0x の後ろに桁数を無制限に追加できます。

バイナリ・リテラルは、バイナリ定数とも呼ばれます。SQL Anywhere では、バイナリ・リテラルをおすすめします。

16 進値との変換

CAST、CONVERT、HEXTOINT、INTTOHEX 関数を使用すると、バイナリ文字列を整数に変換できます。CAST 関数と CONVERT 関数は、16 進定数を TINYINT、符号付きと符号なしの 32 ビット整数、符号付きと符号なしの 64 ビット整数、NUMERIC などに変換します。HEXTOINT 関数は、16 進定数を符号付き 32 ビット整数にのみ変換します。

CAST 関数によって返される値が 8 桁を超えることはできません。8 桁を超える値では、エラーが返されます。8 桁未満の値の左側に 0 が追加されます。たとえば、次の引数は値 -2,147,483,647 を返します。

SELECT CAST ( 0x0080000001 AS INT );

次の引数はエラーを返します。これは、符号付き 32 ビット整数として 10 桁の値を表現できないためです。

SELECT CAST ( 0xff80000001 AS INT );

符号付き 32 ビット整数として値を表現できる場合、HEXTOINT 関数によって返される値は 8 桁を超えることができます。HEXTOINT 関数は、数値、大文字または小文字の A ~ F のみで構成される文字列リテラルまたは変数を受け入れます (0x プレフィクスが付いている場合、付いていない場合の両方)。16 進値の右から 8 桁目が数 8 ~ 9 か大文字または小文字の A ~ F であるか、その前の桁がすべて大文字または小文字の F の場合、その 16 進値は負の整数値になります。

次の引数は、値 -2,147,483,647 を返します。

SELECT HEXTOINT( '0xFF80000001' );
SELECT HEXTOINT( '0x80000001' );
SELECT HEXTOINT ( '0xFFFFFFFFFFFFFFFF80000001' );

次の引数はエラーを返します。これは、引数が符号付き 32 ビット整数として表現できない正の整数値を表しているためです。

SELECT HEXTOINT( '0x0080000001' );
参照