• 締切済み

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)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

「フィールド001」は「varchar2(2)」ですか、正確な列定義を提示してください。 そうでないと回答も曖昧になってしまいます。 後、 SELECT ':' || フィールド001 || ':', COUNT(*) FROM テーブルA WHERE REPACE( TRIM( フィールド001 ), '0', '' ) = '9' GROUP BY ':' || フィールド001 || ':' を実行してみてください。「90」なども対象になってしまいますが、とりあえず現状がどうなっているのかわかると思います。

  • MVC
  • ベストアンサー率42% (3/7)
回答No.2

フィールド001の型が、char型ならそれで間違っていないはずです。 もし、varchar2 ならデータにスペースが混じってる可能性があります。 trim(フィールド001) = '09' でいけるはずです。

回答No.1

(1)で正解のはずですが。

関連するQ&A