Re: Re: 問題18425について
arashi1977
居住地: 広島
投稿数: 1715
ここを読んでみてください。
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
データ型の比較規則
https://docs.oracle.com/cd/E16338_01/server.112/b56299/sql_elements002.htm
ここの文字列比較の「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」から引用します。
引用:てことで、
引用:上記の通り、比較に使う文字列である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® 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文字ずつ比較します。最初に異なる文字の位置で、大きい方の文字を持つ値の方が大きいとみなされます
引用:
先頭文字なのか先頭の単語なのか商品名全体なのか
なので、以前の私の投稿にある
・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の文字よりも大きいとみなされます。
投稿ツリー
-
問題18425について
(abcde12345, 2015-9-17 5:20)
-
Re: 問題18425について
(arashi1977, 2015-9-17 10:02)
-
Re: Re: 問題18425について
(pico1, 2015-12-13 10:48)
- Re: Re: 問題18425について (arashi1977, 2015-12-13 17:57)
-
Re: Re: 問題18425について
(pico1, 2015-12-13 10:48)
- Re: 問題18425について (abcde12345, 2015-9-19 10:33)
- Re: 問題18425について (pico1, 2015-12-19 11:02)
-
Re: 問題18425について
(arashi1977, 2015-9-17 10:02)