問題ID 19891
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID 19891
msg# 1
nyamada43
投稿数: 4
BETWEEN演算子の問題になるのですが、以下のSQLではどの結果が返されるかという問いです。
--
SELECT prod_name
FROM products
WHERE UPPER(prod_name) BETWEEN 'H' AND 'LE';
Lantern
(Wide)LEDシーリングライト
LEDライト
led light
HighPower_LED_ハンディライト2
---
解答では、LanternとHighPower_LED_ハンディライト2と出ました。
そもそも問題ではどの文字コードが使用されている前提なのかわからないのもありますが、BETWEEN演算子ではLEの上限値まで含まれるものと思っていたのでLEDライトも正解かと思ったのですが。
どなたかこの問題の解説を頂けないでしょうか。
--
SELECT prod_name
FROM products
WHERE UPPER(prod_name) BETWEEN 'H' AND 'LE';
Lantern
(Wide)LEDシーリングライト
LEDライト
led light
HighPower_LED_ハンディライト2
---
解答では、LanternとHighPower_LED_ハンディライト2と出ました。
そもそも問題ではどの文字コードが使用されている前提なのかわからないのもありますが、BETWEEN演算子ではLEの上限値まで含まれるものと思っていたのでLEDライトも正解かと思ったのですが。
どなたかこの問題の解説を頂けないでしょうか。
Re: 問題ID 19891
msg# 1.1
quensan
投稿数: 119
過去に似たような質問がありましたが、いかがでしょうか。
http://ping-t.com/modules/forum/index.php?topic_id=2673
11g SQLのフォーラムですが同じ問題のようです。
http://ping-t.com/modules/forum/index.php?topic_id=2673
11g SQLのフォーラムですが同じ問題のようです。
Re: Re: 問題ID 19891
msg# 1.1.1
nyamada43
投稿数: 4
ありがとうございました。解決出来ました。
LEDが含まれないのはOracleが比較する時に、値が長い方に合わせて、もう一方を空白で埋めるという動作をしており、よってH(ASCII 72)〜LE(ASCII 76+69)という値で文字列を見ているということと理解しました。
文字コードうんぬんよりも、この観点不足だったようです。
LEDが含まれないのはOracleが比較する時に、値が長い方に合わせて、もう一方を空白で埋めるという動作をしており、よってH(ASCII 72)〜LE(ASCII 76+69)という値で文字列を見ているということと理解しました。
文字コードうんぬんよりも、この観点不足だったようです。