• ベストアンサー

アクセスのクエリ 1文字以上を抽出

アクセスのクエリの抽出条件で、「1文字以上」とする方法を教えてください。 抽出条件をビルドで作ってみたのですが、 勝手にダブルコーテーションがついてしまいます。 1文字以上の値はあるのに何も抽出されません。 sql文は SELECT [テーブル1].[フィールド1] FROM テーブル1 WHERE ((Len([テーブル1]![フィールド1])>"1")); となっています。 ご教授よろしくお願いします。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

【要旨】 「1文字以上」の場合、以下のSQLで取得できます: Select [テーブル1].[フィールド1] From テーブル1 Where (Len([テーブル1].[フィールド1])>=1); 【詳細】 念のためですが、「一文字以上」の場合は「>1」ではなく 「>=1」になります(汗) それはともかく・・・ 対象フィールドの文字数を抽出条件に使用する場合、 クエリのデザインビューでは、『フィールド』欄にフィールド ではなく文字数評価式(Len関数)を、『抽出条件』に 文字数を、それぞれ記述します。 SQL文では以下の通りです: <文字数表示が必要な場合> Select [テーブル1].[フィールド1], Len([テーブル1].[フィールド1]) As 文字数 From テーブル1 Where (Len([テーブル1].[フィールド1])>=1); <文字数表示が不要の場合> Select [テーブル1].[フィールド1] From テーブル1 Where (Len([テーブル1].[フィールド1])>=1); または、Access上で「0以外」は「条件を満たしている」 と判断されることを利用して、 Select [テーブル1].[フィールド1] From テーブル1 Where (Len([テーブル1].[フィールド1])); と、「>=1」を省略してもOkです。 なお、「1文字以上」(=空ではない)という条件で、 文字数の表示も不要な場合は、以下のようにしても ご希望の結果が得られますので、併せて参考まで: Select [テーブル1].[フィールド1] From テーブル1 Where (Nz([テーブル1].[フィールド1],"") <> "");

ZRVHFSUIITT
質問者

お礼

ありがとうございました。