今、とあるテーブル(「テーブル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件にしてみたものの、やはりオーバーフローです。
ググって出てきた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で、数値型のフィールドに対して部分一致検索を行う方法はないでしょうか。
よろしくお願い致します。
数値を文字にするのは 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
数値を文字にするのは 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
a-kuma3さんありがとうございます!
うまく抽出できました(^^;)
a-kuma3さんありがとうございます!
うまく抽出できました(^^;)