LoginSignup
3
1

More than 1 year has passed since last update.

PostgreSQLで数値をlike検索する方法

Last updated at Posted at 2022-02-16

「数値型のカラムから9で終わる値を検索したい」というときの方法です。
ちょっとしたことですが、覚えておくと便利です。

失敗事例

-- sint_colは「smallint」のカラムです。
select * from table_name where sint_col like '%9';

数値はlikeで検索できないので、上記のSQLを実行するとoperator does not exist: smallint ~~ unknownのようなエラーになります。

数値をlike検索する方法

数値を文字列にキャストしてしまえば、likeで検索できます。

型キャストを使う

数値のカラムはcast(数値のカラム as text)のように書くと文字列にキャストできます。
数値のカラム::textという書き方もできます(意味は同じです)。

詳細 : 4.2. 評価式 - postgresql

select * from table_name where cast(sint_col as text) like '%9';

暗黙キャストを定義する

こちらの方法は、やっていませんが場合によっては有効かもしれません。
CREATE CASTで新しくキャストを定義できます。

詳細 : CREATE CAST - postgresql

しかし、「多用しない方が賢明です。」と記載されていることから一時的に使いたいのであれば「型キャスト」のほうが良いかもしれません。

暗黙キャストは、多用しない方が賢明です。 暗黙的キャストを使用し過ぎると、PostgreSQLがコマンドを思わぬ意味に解釈してしまう原因になります。
CREATE CAST - postgresql

3
1
0

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
3
1