Access VBAのSQLで数値型フィールドの値に対して部分一致検索(あいまい検索)をしたいです。


今、とあるテーブル(「テーブルA」とします)がありまして。「受付日」というフィールド(列)に対して、あいまい検索をかけたいのですが。

2020年のデータだけを抽出しようとしても、うまく抽出ができないのです。
受付日は「201211」のように、数値型の6桁の値です。
ですので、頭に'20'が付いているデータを抽出すればいいと考えています。

-----------
select * from テーブルA where 受付日 like '20%'
-----------

とSQLを投げると、抽出結果はフィールド名しか表示されず、0件です。
テキストでないとlike検索できないというルールがあるようなので、int型に変えてから抽出してみようと、

-----------
select * from テーブルA where cint(受付日) like '20%'
-----------

とすると「オーバーフロー」というエラーが出てきてしまいました。
件数が多いからかな?と思って、

-----------
select top 1000 * from テーブルA where cint(受付日) like '20%'
-----------

と、1000件にしてみたものの、やはりオーバーフローです。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2021/02/09 10:01:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:moon-fondu

ググって出てきたcast関数を使えばどうかと思いまして。

https://style.potepan.com/articles/20743.html

の記事に「WHERE CAST(ListPrice AS int) LIKE '33%';」とありましたので、自分も、

-----------

select * from テーブルA where cast(受付日 as string) like '20%'

-----------

としてみたところ、「クエリ式'cast(受付日 as string) like 20%''の構文エラー : 演算子がありません。」と、エラーが出てきてしまいました。

AccessのSQLだからSQL serverとは違うのでしょうか…手詰まりの状況です。

何とかしてAccessのSQLで、数値型のフィールドに対して部分一致検索を行う方法はないでしょうか。

よろしくお願い致します。

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント1500pt

数値を文字にするのは CStr 関数です。

select * from テーブル1 where cstr(受付日) like '20*'

あと、'%''*' で。Access って、そんなもんです。


もしくは、数値のまま。

select * from テーブル1 where 受付日 between 200000 and 209999

下四桁は月日みたいですから、こうでも。

select * from テーブル1 where 受付日 between 200101 and 201231
id:moon-fondu

a-kuma3さんありがとうございます!

うまく抽出できました(^^;)

2021/02/09 10:01:40

その他の回答0件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント1500pt

数値を文字にするのは CStr 関数です。

select * from テーブル1 where cstr(受付日) like '20*'

あと、'%''*' で。Access って、そんなもんです。


もしくは、数値のまま。

select * from テーブル1 where 受付日 between 200000 and 209999

下四桁は月日みたいですから、こうでも。

select * from テーブル1 where 受付日 between 200101 and 201231
id:moon-fondu

a-kuma3さんありがとうございます!

うまく抽出できました(^^;)

2021/02/09 10:01:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません