レス
元トピ次レス
タイトル
Re: betweenに関する。
フォーラム
最強WEB問題集Oracle Master 12c Bronze SQL基礎
投稿ユーザ(投稿日)
(2020/5/15)
本文
まず大事なのは、ここでの問題は「BETWEEN」であって「LIKE」ではない、ということです。
[code]
SELECT prod_name
FROM products
WHERE UPPER(prod_name) BETWEEN 'H' AND 'LE';
[/code]
条件はUPPER(prod_name)により、prod_nameの文字列がすべて大文字で比較されます。次にBETWEENですが、BETWEENはざっくりいうと「大小比較」なのです。わかりやすく言うと「BETWEEN 100 AND 200」って言ったときに「210」は含まない、ということです。

ここが大丈夫だったら話はかんたんなのです。


-----引用(始)-----

Lantern
led light
(Wide)LEDシーリングライト
HighPower_LED_ハンディライト2
LEDライト

なんで答えが1,4番だけなのかよくわかりません。LEDライトはできないのかな。。・?

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

全部大文字にすると
[code]
LANTERN
LED LIGHT
(WIDE)LEDシーリングライト
HIGHPOWER_LED_ハンディライト2
LEDライト
[/code]
ですよね。並び替えると
[code]
(WIDE)LEDシーリングライト
HIGHPOWER_LED_ハンディライト2
LANTERN
LED LIGHT
LEDライト
[/code]
となります。ここで大小比較になりますが
- (とHだと「H」のほうが大きい→「(WIDE)LEDシーリングライト」はBETWEENの範囲に含まれない
- HとHIだと「Hのほうが小さい」→「HIGHPOWER_LED_ハンディライト2」はBETWEENの範囲に含まれる
- LAとLEだと「LE」のほうが大きい→「LANTERN」はBETWEENの範囲に含まれる
- LEとLEDだと「LED」のほうが大きい→「LED LIGHT」や「LEDライト」ははBETWEENの範囲に含まれない
のです。

ここは実際にSQL使って確認すると、Oracleが文字の大小をどう判断しているのかがわかります。
[code]
# sqlplus pingt/oracle@XE

SQL*Plus: Release 11.2.0.2.0 Production on 金 5月 15 21:52:56 2020

Copyright (c) 1982, 2011, Oracle. All rights reserved.



Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> SELECT CASE
WHEN 'H' > '(' THEN 'LOWER'
WHEN 'H' < '(' THEN 'HIGHER'
END RESULT
FROM DUAL; 2 3 4 5

RESULT
------
LOWER ← 「H」より「(」は小さい

SQL> SELECT CASE
WHEN 'H' > 'HI' THEN 'LOWER'
WHEN 'H' < 'HI' THEN 'HIGHER'
END RESULT
FROM DUAL; 2 3 4 5

RESULT
------
HIGHER ← 「H」より「HI」は大きい

SQL> SELECT CASE
WHEN 'LE' > 'HI' THEN 'LOWER'
WHEN 'LE' < 'HI' THEN 'HIGHER'
END RESULT
FROM DUAL; 2 3 4 5

RESULT
------
LOWER ← 「LE」より「HI」は小さい

SQL> SELECT CASE
WHEN 'LE' > 'LANTERN' THEN 'LOWER'
WHEN 'LE' < 'LANTERN' THEN 'HIGHER'
END RESULT
FROM DUAL; 2 3 4 5

RESULT
------
LOWER ← 「LE」より「LANTERN」は小さい

SQL> SELECT CASE
WHEN 'LE' > 'LED' THEN 'LOWER'
WHEN 'LE' < 'LED' THEN 'HIGHER'
END RESULT
FROM DUAL; 2 3 4 5

RESULT
------
HIGHER ← 「LE」より「LED」は大きい
[/code]

レス一覧

元トピ次レス


Ping-tモバイルTOP

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