「数値型のカラムから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
という書き方もできます(意味は同じです)。
select * from table_name where cast(sint_col as text) like '%9';
暗黙キャストを定義する
こちらの方法は、やっていませんが場合によっては有効かもしれません。
CREATE CAST
で新しくキャストを定義できます。
しかし、「多用しない方が賢明です。」と記載されていることから一時的に使いたいのであれば「型キャスト」のほうが良いかもしれません。
暗黙キャストは、多用しない方が賢明です。 暗黙的キャストを使用し過ぎると、PostgreSQLがコマンドを思わぬ意味に解釈してしまう原因になります。
CREATE CAST - postgresql