1. ホーム
  2. データベース
  3. エスキューエルライト

SQLiteチュートリアル(6)。式の説明

2022-01-21 15:29:20

I. よく使われる表現

    ほとんどのリレーショナルデータベースと同様に、SQLiteは標準SQLで提供される式を非常によくサポートしており、その関数は以下のように標準SQLと一致しています。

コピーコード コードは以下の通りです。

    ||
    * / %
    + -
    << >> & |
    < <= > >=
    == ! = <> IS IS NOT IN LIKE
    AND  
    OR
    ~ NOT

    上記の式で、唯一明確にする必要があるのは "||" で、これは主に2つの文字列を連結するために使われ、その戻り値は連結された文字列です。この演算子の両側のオペランドが非文字列型であっても、この式を実行する前にあらかじめ文字列に変換し、その後に連結をする必要があります。

II. 条件式。

    この式の構文規則は以下の通りです。

コピーコード コードは以下の通りです。

    1). CASE x WHEN w1 THEN r1 WHEN w2 THEN r2 ELSE r3 END
    2). CASE WHEN x=w1 THEN r1 WHEN x=w2 THEN r2 ELSE r3 END

    最初の場合、条件式xは一度だけ計算され、WHENキーワードに続く条件とそれぞれ一つずつ、等しい条件が見つかるまで比較され、比較規則は等号(=)式と等価である。一致する条件が見つかればTHENキーワードが指す値が返され、一致しない場合はELSEキーワードの後の値が返され、ELSE分岐が存在しない場合はNULLとなる。 2番目の場合について、最初の場合と異なるのは、式xが複数回実行できることだけで、例えば最初のWHEN条件が一致しなければ計算が続けられ 例えば最初のWHEN条件が一致しなければ、後のWHEN条件の計算が続けられ、他のすべての規則は最初のものと全く同じである。最後に、どちらの形式のCASE式も短絡の原則に従うこと、つまり、最初の式の条件が一致すると、それ以降のWHEN式はすべて実行されず、比較されないことに注意することが重要である。

III. 変換式。

    この式の構文規則は以下の通りです。

コピーコード コードは以下の通りです。

    CAST(expr AS target_type)

    この式は、引数 expr を、以下の変換規則のリストで指定される target_type 型に変換する。


<テーブル ターゲットタイプ 変換ルールの説明 テキスト INTEGERまたはREAL型の値をTEXTに変換する場合、C/C++インターフェース関数sqlite3_snprintfが行うのと同じように変換するのが素直です。 リアル TEXT型の値がREAL型に変換された場合、実数に変換できるテキストは、テキストの先頭で対応する実数に変換され、それ以外は無視されます。テキスト値の先頭のゼロもそのまま無視される。テキストに実数に変換できる文字がない場合、CAST式の結果は0.0となります。 INTEGER TEXT型の値をINTEGER型に変換する場合、整数に変換できるテキストは、テキストの先頭で対応する整数に変換され、残りは無視されます。テキスト値の先頭のゼロも無視される。テキストに整数に変換できる文字がない場合,CAST 式の結果は 0 になります。
変換で実数値をINTEGER型に変換する場合、実数の小数部は直接切り捨てられます。実数が大きすぎる場合、最大の負の整数が返されます:-9223372036854775808。 NUMERIC   テキスト値をNUMERICに変換する場合、値はまずREALに強制され、SQLiteはREALからINTEGERへの変換がデータ情報の損失をもたらさず、完全に可逆である場合にのみINTEGERにさらに変換します。

    最後に注意することは、もしexprがNULLであれば、変換結果もNULLになるということです。