- 締切済み
Oracleのシングルクォーテーション
いつもお世話になっております。 Oracleの「'(シングルクォーテーション)」の使い方について教えてください。 テーブルAのフィールド001には2桁の数値が文字列型として格納されています。 (1)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = '09' でデータの抽出をしているのですが、データがあるにも係らず、「0」となってしまいます。 (2)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = 09 では、「09」だけでなく「9」までカウントしてしまいます。 データの中には「09」「9」が混在していて、これらを別々にカウントしたいのですが、(1)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
「フィールド001」は「varchar2(2)」ですか、正確な列定義を提示してください。 そうでないと回答も曖昧になってしまいます。 後、 SELECT ':' || フィールド001 || ':', COUNT(*) FROM テーブルA WHERE REPACE( TRIM( フィールド001 ), '0', '' ) = '9' GROUP BY ':' || フィールド001 || ':' を実行してみてください。「90」なども対象になってしまいますが、とりあえず現状がどうなっているのかわかると思います。
- MVC
- ベストアンサー率42% (3/7)
フィールド001の型が、char型ならそれで間違っていないはずです。 もし、varchar2 ならデータにスペースが混じってる可能性があります。 trim(フィールド001) = '09' でいけるはずです。
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
(1)で正解のはずですが。