この引用は、この OCA/OCP Oracle Database 11g All-in-One Exam Guide の第 9 章の31 ページからのようです。abcもしそれがそのように機能し、実際に同等であるとcba見なされた場合、これは正しくないように見えます (親切です) 。
11gR2 SQL 言語リファレンスには次のように書かれています。
デフォルトのバイナリ比較では、データベース・キャラクタ・セット内の文字の数値コードの連結値に従って、文字列が比較されます。文字セット内の他の文字よりも大きな数値を持つ場合、その文字は別の文字よりも大きくなります。
主な違いは、「連結された値」というフレーズです。つまり、@JoroenMoonen が示したものに近く、文字セットの数値コードがつなぎ合わされています。本が示した値の合計ではありません。
しかし、連結される各文字の数値コードと、比較される数値を表す結果の (潜在的に非常に長い!) 文字列を考えるのは誤解を招く可能性があります。これらの値を取るabc= 000001000001000001100100=266340とcba= 011001000001000000000100= 6557700。6557700 と 266340 を比較するだけで、それcbaが「より大きい」ことを示しabcます。しかしcb、「よりも大きい」abc- select greatest('abc', 'cb') from dual- 同じ変換を行うと、cb= 0110010000010000=が得られます25616。これは、数値として明らかに 266340 よりも小さくなります。
実際には、同等の 10gR1 ドキュメントでよりよく説明されていると思います。
Oracle は、異なる最初の文字まで 1 文字ずつ 2 つの値を比較します。その位置にある文字が大きいほど値が大きいと見なされます。長さが異なる 2 つの値が短い方の値の最後まで同じである場合、長い方の値が大きいと見なされます。長さが等しい 2 つの値に異なる文字がない場合、値は等しいと見なされます。
したがって、ASCII を想定すると、c(99) は (97) より大きいaため、どちらの文字列でもそれ以上の文字を調べる必要はありません。これは決して見ることはできませabcんcba。
とにかく、あなたが本の説明に戸惑うのは当然です。