5.4.6 <リテラル>

<リテラル>の定義について説明します。<リテラル>とは,null値以外の値です。

<リテラル>には,次の種類があります。

<この項の構成>
(1) <リテラル>として指定できる字句
(2) 規約詳細

(1) <リテラル>として指定できる字句

<リテラル>として指定できる字句を,次の表に示します。

表5-25 <リテラル>として指定できる字句

種 類
文字列リテラル<シングルクォート>で囲まれた文字列
(文字列には,<シングルクォート以外の文字>または<二重シングルクォート>('')が指定できる)
数値リテラル符号(+または-)付きの数字
(符号は省略できる)
論理リテラルTRUE
FALSE
UNKNOWN

注※ <シングルクォート以外の文字>は,使用できる文字コードセットの文字から,<シングルクォート>を除いたものです。edmSQLで使用できる文字で構成される必要はありません。ただし,文字列リテラルは文字列型の値であるため,文字列型を格納するHiRDBのデータ型(MVARCHAR型)で制限される文字は使用できません。


(2) 規約詳細

<リテラル>の詳細について説明します。

(a) 文字列リテラルの詳細

文字列リテラルは,任意の文字列定数を表現する場合に使用します。文字列リテラルは,文字列型の値に対応します。したがって,文字列リテラルで使用できる文字列の長さは,HiRDBでの制限に従います。HiRDBの制限以上の長さの文字列を文字列リテラルとして指定したい場合は,?パラメタを使用してください。

文字列リテラルの表記例とedmSQL検索実行時の値の対応を,次の表に示します。なお,文字列リテラルを表す文字列型の値は,HiRDBではMVARCHAR型のデータとして格納されます。

表5-26 文字列リテラルの表記例とedmSQL検索実行時の値の対応

文字列リテラルの表記例値の扱われ方edmSQL検索実行時の値
'aaa'文字列データaaa
'124'文字列データ124
'abc あいうえお'混在文字列データabc あいうえお
'ab''c あ''いうえお'シングルクォートのエスケープab'c あ'いうえお
(b) 数値リテラル(符号付き数値リテラル)の詳細

数値リテラルは,任意の数値定数を表現する場合に使用します。なお,DocumentBrokerで使用できる数値リテラルは,4バイトの整数値だけです。

なお,4バイトの整数値の有効値は,-2,147,483,648~2,147,483,647までの値です。この範囲外の値を指定した場合,HiRDBの制限に従って,目的の検索が実行できなかったり,データベースのエラーになったりします。

数値リテラルの表記例とedmSQL検索実行時の値の対応を,次の表に示します。

表5-27 数値リテラルの表記例とedmSQL検索実行時の値の対応

数値リテラルの表記例値の扱われ方edmSQL検索実行時の値
123数値データ123
0000000123​数値データ123
+1234567890​数値データ(正の整数値)1234567890​
-1234567890​数値データ(負の整数値)-1234567890​
987654321000000000​リテラルとしては正しい表記ですが,4バイト整数値の有効値ではないため,正しく扱われません。

(凡例)

-:正しい値になりません。


(c) 論理リテラルの詳細

論理リテラルは,論理値である「真」,「偽」および「不定」の三つの値を,それぞれ「TRUE」,「FALSE」および「UNKNOWN」で表現します。

論理型の値を表すBoolean型のプロパティの値は,TRUEは「1」,FALSEは「0」,UNKNOWNは「2」として,数値で格納されます。ただし,この値をedmSQLで数値として扱うことはできません。edmSQLで指定する場合は,必ずTRUE,FALSEまたはUNKNOWNとして表現してください。

また,論理リテラルを整数の演算に使用する値として使用することもできません。ただし,Java クラスライブラリを使用して,Javaの基本データ型の値に変換した場合は,論理リテラルの値を数値として扱うこともできます。この場合の数値のデータベースでの扱われ方は,HiRDBでのデータモデルの対応付けに依存します。

論理リテラルの表記ごとの,論理値を表すTRUEの扱われ方について,例に示します。