データ型比較ルール

この項では、TimesTenで各データ型の値を比較する方法について説明します。

数値

大きな値は小さな値より大きくなります。-1は10よりも小さく、-10は-1より小さくなります。

浮動小数点値NaNは、他のすべての数値より大きく、NaN自体と同等です。

日付値

新しい日付の方が古い日付より大きいとみなされます。たとえば、'10-AUG-2005'に相当する日付は、'30-AUG-2006'に相当する日付よりも小さく、'30-AUG-2006 1:15 pm'は、'30-AUG-2006 10:10 am'より大きくなります。

バイナリ・ソートおよび言語ソート

バイナリ・ソートでは、データベース文字セットでの文字の数値コードの連結値に従って文字列が比較されます。文字セット内のある文字の数値がもう一方の文字の数値より大きい場合、その文字がもう一方の文字より大きいと判断されます。空白はすべての文字より小さくなります。

言語ソートは、数値コードのバイナリ順序が、比較している文字の言語順序と一致しない場合に役立ちます。言語ソートでは、NLS_SORTによって設定された言語ルールに基づいて、SQLソートおよびSQL比較が行われます。言語ソートの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「言語ソート・ルールでのサポートされている言語規則」を参照してください。

デフォルトはバイナリ・ソートです。

空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス

空白埋め比較セマンティクスを使用している場合に2つの値の長さが異なると、両方が同じ長さになるまで短い方の値に空白が追加されます。その後、最初の異なる文字が検出されるまで1文字ずつ値が比較されます。この最初の違いが検出された位置で、より大きな文字を持つ値が、大きい方の値とみなされます。2つの値に異なる文字がない場合、これらは同等であるとみなされます。つまり、2つの値の違いが後続の空白の数のみである場合、これらの値は同等であるとみなされます。

空白埋め比較セマンティクスは、比較対象の両方の値がCHAR型またはNCHAR型の式あるいはテキスト・リテラルである場合に使用します。

非空白埋め比較セマンティクスを使用している場合、最初の異なる文字が検出されるまで2つの値が1文字ずつ比較されます。この最初に違いが検出された位置で、より大きな文字を持つ値が、大きい方の値とみなされます。長さが異なる2つの値が短い方の値の最後まで同じである場合は、長い方が大きい値とみなされます。長さが同じ2つの値に異なる文字がない場合、これらは同等であるとみなされます。

非空白埋め比較セマンティクスは、比較対象の両方の値にVARCHAR2型またはNVARCHAR2型が使用されている場合に使用します。

空白埋め比較セマンティクスを使用した場合の例は、次のとおりです。

'a   ' = 'a'

非空白埋め比較セマンティクスを使用した場合の例は、次のとおりです。

'a   ' > 'a'