3

私はオラクルの基礎を読んでいて、奇妙な声明に出くわしました。どこまで本当かわかりません。

声明は言う

" 文字列値 '2' は文字列値 '100' より大きいです。文字 '1' は文字 '10' より小さいです。 "

上記のトピックに光を当ててください。内部比較は ASCII 値を使用して行わなければならないことを理解しています。適切な論理的説明を求めています。

4

2 に答える 2

6

これは、文字列として扱われる数字が番号順にではなく、辞書式順序で並べ替えられることを意味します。これは、辞書で単語が並べ替えられるのと同じ方法です。つまり、文字は左側から1つずつ比較されます。

最初の例では、「2」が「1」と比較されて大きいことがわかったため、「2」は「100」よりも大きくなっています。これを辞書の「C」と「BAA」の順序と比較してください。

2番目の例では、「1」は「10」の左側の「1」と完全に一致するため、「1」は「10」未満ですが、「10」には一致に続く文字があります。したがって、それは大きいです。繰り返しますが、これを辞書の「B」と「BA」の順序と比較してください。

于 2012-07-06T04:52:09.233 に答える
1

それらがASCII値でソートされていると仮定することは正確に正しいです-これはアルファベットソートと呼ばれます。文字列は数値ではなくテキストとしてソートされます。

アルファベット順では、値が位置ごとに比較されます。文字列「2」を文字列「100」と比較する場合、「2」を「1」と比較することから始めます。「2」はアルファベット順で「1」の後に来るため(「2」のASCII値は「1」のASCII値よりも大きい)、比較が停止するため、「100」はアルファベット順で「2」の前にリストされます。これは、「b」を「azz」と比較するのとまったく同じです。「a」は「b」の前にあるため、「azz」は「b」の前にソートされます。

あなたのテキストはこれを指摘しています。なぜなら、この振る舞いは理解できるものの、直感的ではないからです。2 <100であるため、ソートでは「2」の後に「100」が配置されると予想されますが、それはソートではありません。

于 2012-07-06T04:59:19.510 に答える