- PR -

Selectの項目部分での範囲指定方法

1
投稿者投稿内容
セブン
会議室デビュー日: 2005/09/09
投稿数: 8
投稿日時: 2006-05-19 11:28
シッチーと申します。
初心者で、至らない点があるとは思いますが、ご教授宜しくお願いします。

SQLのSelect文に関する質問です。

Oracleの10gを使用しています。

私が行いたい処理はSelect文の項目部分での文字の置換を行いたいと考えています。
以下、現行のソース。
SELECT a.user_cd FROM user1 a, user2 b WHERE a.user_cd = b.user_cd

仮に
a.user_cdに'1111'1112''1113'1199'
と言うデータがあったとして、
3・4桁目を抽出して、10〜15までの数値であれば'aa'と置換し、
16〜100までの数値であれば'bb'と置換を行いたいと考えております。

translate関数を使用して、'10'であれば'aa'と置き換えはできたのですが、
数値の範囲指定がわかりませんでした。(項目部分で範囲指定が可能かどうかもわかりません。)
【作成Sample】
SELECT a.user_cd,translate('10',substr(a.user_cd,3,2),'aa') a FROM user1 a, user2 b WHERE a.user_cd = b.user_cd

検索エンジンでSQL,範囲指定で検索をかけて調べていましたが、
BETWEEN関数ばかりで解決に役立つ情報は見つかりませんでした。
過去ログも読みましたが、探し方がまずいのか、
関連する情報を見つけることはできませんでした。

解決策をご存知の方はご教授よろしくお願い致します。


温州蜜柑
ベテラン
会議室デビュー日: 2005/01/24
投稿数: 65
お住まい・勤務地: 東京都
投稿日時: 2006-05-19 11:43
「case when ... 」を使ったらよいと思います。
Penguin
会議室デビュー日: 2006/03/01
投稿数: 13
投稿日時: 2006-05-19 11:52
コード:


SELECT CASE
WHEN SUBSTRB(a.user_cd,3,2) BETWEEN '10' AND '15' THEN 'aa'
WHEN SUBSTRB(a.user_cd,3,2) BETWEEN '16' AND '99' THEN 'bb'
WHEN SUBSTRB(a.user_cd,3,2) = '100' THEN 'bb'
ELSE 'それ以外の場合の値'
END
FROM user1 a, user2 b WHERE a.user_cd = b.user_cd



ですね。

#3,4桁目が100とかってありえませんがね・・・


[ メッセージ編集済み 編集者: Penguin 編集日時 2006-05-19 11:56 ]

[ メッセージ編集済み 編集者: Penguin 編集日時 2006-05-19 12:01 ]
セブン
会議室デビュー日: 2005/09/09
投稿数: 8
投稿日時: 2006-05-19 15:17
温州蜜柑さん Penguinさん

回答ありがとうございました。
無事に行いたい処理を行うことができました。

1

スキルアップ/キャリアアップ(JOB@IT)