Re: Re: 問題18425について

この質問の投稿一覧へ

なし Re: Re: 問題18425について

msg# 1.1.1.1
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-12-13 17:57 | 最終変更
arashi1977  長老 居住地: 広島  投稿数: 1715
ここを読んでみてください。

Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
データ型の比較規則
https://docs.oracle.com/cd/E16338_01/server.112/b56299/sql_elements002.htm

ここの文字列比較の「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」から引用します。
引用:
空白埋め比較セマンティクスでは、2つの値の長さが異なる場合、Oracleはまず短い方の値の最後に空白を追加して、2つの値が同じ長さになるようにします。次に、その2つの値を、最初に異なる文字まで1文字ずつ比較します。最初に異なる文字の位置で、大きい方の文字を持つ値の方が大きいとみなされます。
(略)
非空白埋め比較セマンティクスでは、Oracleは、2つの値を、最初に異なる文字まで1文字ずつ比較します。最初に異なる文字の位置で、大きい方の文字を持つ値の方が大きいとみなされます
てことで、
引用:
先頭文字なのか先頭の単語なのか商品名全体なのか
上記の通り、比較に使う文字列であるUPPER(prod_name)と、比較対象である「H」または「LE」を先頭から順に比較、ですね。

なので、以前の私の投稿にある
・select prod_name from products where upper(prod_name) >= 'H' order by upper(prod_name);
・select prod_name from products where upper(prod_name) <= 'LE' order by upper(prod_name);
のような結果になるわけですね

まぁバイナリ比較または言語比較からしても
引用:
デフォルトのバイナリ比較では、Oracleは、データベース・キャラクタ・セット内の文字の数値コードを連結した値に従って文字列を比較します。第1の文字の数値が第2の文字の数値よりも大きい場合、第1の文字は第2の文字よりも大きいとみなされます。
なので、順にみるというのは同じかと思います。

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.