Menu Close
Settings Close

Language and Page Formatting Options

11.4.13. HQL 述語について

述語は where 節、having 節、および検索 case 式の基盤を形成します。これらは式で、通常は TRUE または FALSE の真理値で解決しますが、NULL が関係するブール値の比較は UNKNOWN で解決します。

HQL 述語

NULL 述語
NULL の値をチェックします。基本的な属性参照、エンティティー参照、およびパラメーターへ適用できます。HQL はコンポーネント/埋め込み可能タイプへの適用も許可します。

例11.14 NULL チェックの例

// select everyone with an associated address
select p
from Person p
where p.address is not null

// select everyone without an associated address
select p
from Person p
where p.address is null
LIKE 述語
文字列値で LIKE 比較を実行します。構文は次の通りです。
like_expression ::=
   string_expression
   [NOT] LIKE pattern_value
   [ESCAPE escape_character]
セマンティックは SQL の LIKE 式に従います。pattern_value は、string_expression で一致を試みるパターンです。SQL と同様に、pattern_value に「_」や「%」をワイルドカードとして使用できます。意味も同じで、「_」はあらゆる 1 つの文字と一致し、「%」はあらゆる数の文字と一致します。
任意の escape_character は、pattern_value の「_」や「%」をエスケープするために使用するエスケープ文字を指定するために使用されます。「_」や「%」が含まれるパターンを検索する必要がある場合に役立ちます。

例11.15 LIKE 述語の例

select p
from Person p
where p.name like '%Schmidt'

select p
from Person p
where p.name not like 'Jingleheimmer%'

// find any with name starting with "sp_"
select sp
from StoredProcedureMetadata sp
where sp.name like 'sp|_%' escape '|'
BETWEEN 述語
SQL の BETWEEN 式と同様です。値が他の 2 つの値の間にあることを評価するため実行します。演算対象はすべて比較可能な型を持つ必要があります。

例11.16 BETWEEN 述語の例

select p
from Customer c
    join c.paymentHistory p
where c.id = 123
  and index(p) between 0 and 9

select c
from Customer c
where c.president.dateOfBirth
        between {d '1945-01-01'}
            and {d '1965-01-01'}

select o
from Order o
where o.total between 500 and 5000

select p
from Person p
where p.name between 'A' and 'E'