- ベストアンサー
検索条件について
以下の項目があります。 CD_NAME NUMBER(6) 値:必ず5桁以上は入っています。 上記項目の値に対して5桁目と6桁目が'11'のレコードを取得したい場合にはどういった条件になるのでしょうか? (説明が下手ですいません。) □□□□□□ ↑↑ 5桁目と6桁目の例 12345 →1 123456→12
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
where trunc(CD_NAME / 10000)=11 で良いんじゃないですか?
その他の回答 (3)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
#3の訂正です。 where substrb(to_char(CD_NAME,'FM000000'),1,2)='11' または where substrb(to_char(CD_NAME,'000000'),2,2)='11' です。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
>#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桁が邪魔をして正しい抽出がされません。
- shangzi
- ベストアンサー率47% (17/36)
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も選択されます。
お礼
回答ありがとうございます。 112345のみ取得したかったです。 ただ、項目が数値ですので仮に値が1のデータを取得したいときなどの為に数値変換しなくてはなりません。 こういう方法もあることを参考にしたいと思います。 ありがとうございました。
お礼
回答ありがとうございます。 No.4で正常に動作したのでお礼を書こうと思ったんですけど上記で単純にできました。 ありがとうございました。