0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AthenaでCAST関数を利用する機会が増えた

Last updated at Posted at 2021-01-30

昨年からAWSを触る機会が増えて、今年に入ってから初めてAthenaを使いました。

Athenaの環境でPrestoに触れてからというもの、標準SQLでクエリーを記述している頃に比べるとエラーの発生頻度が増えた気がする。。

もしかしたら、私と同じように困っている人がいるのでは?と思い、今回投稿してみることにしました。

例えば、至ってシンプルな下記テーブル情報が存在しているとします。

データベース:test
テーブル:test_table
カラム:test_code,test_name,test_date

Athenaを含めた、他のRDB上で下記クエリーを実行すると、全カラムを全件出力して正常終了します。

SELECT * FROM test.test_table;

しかし、Athenaでtest_table.test_code内に存在する111という情報を取り出そうとすると・・・

SELECT *
FROM   test.test_table
WHERE  test_table.test_code = 111;

「SYNTAX_ERROR: line~」から始まるエラーが返ってきました。でも、レコードに111は存在しています。。。

Google先生を頼りに調べてみたところ、どうやらAthenaではCAST関数を用いて、型変換しなければ上手くいかないケースが多い事を知りました。

データの型については、コチラのページを参考にしました。

※ついでにCASTしてからSUBSTRで指定した文字列を返すケースも書いてあるので助かりました。

そういうわけで、CAST関数を用いて型変換を行ってみたら・・・すんなりと実行結果が戻ってきました。

SELECT *
FROM   test.test_table
WHERE  cast(test_table.test_code as integer) = 111

もし、私と同じような目に合った方がいたら参考にしてみてください。

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?