こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

検索条件について

以下の項目があります。
CD_NAME NUMBER(6)
値:必ず5桁以上は入っています。

上記項目の値に対して5桁目と6桁目が'11'のレコードを取得したい場合にはどういった条件になるのでしょうか?
(説明が下手ですいません。)
□□□□□□
↑↑
5桁目と6桁目の例
12345 →1
123456→12

投稿日時 - 2005-04-15 10:00:44

QNo.1332150

すぐに回答ほしいです

質問者が選んだベストアンサー

where trunc(CD_NAME / 10000)=11

で良いんじゃないですか?

投稿日時 - 2005-04-15 10:48:38

お礼

回答ありがとうございます。
No.4で正常に動作したのでお礼を書こうと思ったんですけど上記で単純にできました。
ありがとうございました。

投稿日時 - 2005-04-15 15:13:26

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

#3の訂正です。
where substrb(to_char(CD_NAME,'FM000000'),1,2)='11'
または
where substrb(to_char(CD_NAME,'000000'),2,2)='11'

です。

投稿日時 - 2005-04-15 14:18:23

>#2
>where substrb(to_char(CD_NAME,'000000'),1,2)= '11';
>これだと、
> 112345 が選択され、11234は選択されません。

質問内容からすれば、11234は、選択される必要はないと思いますが..
貴殿の条件では、112345も抽出されないはずです。

部分文字列比較するなら、
where substrb(to_char(CD_NAME,'TM000000'),1,2)='11'
または
where substrb(to_char(CD_NAME,'000000'),2,2)='11'
としないと、符号用の1桁が邪魔をして正しい抽出がされません。

投稿日時 - 2005-04-15 14:14:12

ANo.2

5桁目と6桁目が11と言うのがよく分かりませんでしたが、
こう言うことかなぁ…

where substrb(to_char(CD_NAME,'000000'),1,2)= '11';

これだと、
 112345 が選択され、11234は選択されません。
後者も選択したいのであれば、
フォーマットの指定部分を外せば良いかと思います。

where substrb(to_char(CD_NAME),1,2) = '11';

これだと、
 112345 も 11234も選択されます。

投稿日時 - 2005-04-15 13:21:15

お礼

回答ありがとうございます。
112345のみ取得したかったです。
ただ、項目が数値ですので仮に値が1のデータを取得したいときなどの為に数値変換しなくてはなりません。
こういう方法もあることを参考にしたいと思います。
ありがとうございました。

投稿日時 - 2005-04-15 15:17:53

あなたにオススメの質問