レス
前レス元トピ次レス
タイトル
Re: Re: 問題18425について
フォーラム
最強WEB問題集Oracle Master 11g Bronze SQL基礎
投稿ユーザ(投稿日)
(2015/9/17)
本文
ここを読んでみてください。

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の文字よりも大きいとみなされます。

-----引用(終)-----

なので、順にみるというのは同じかと思います。

レス一覧

前レス元トピ次レス


Ping-tモバイルTOP

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