PostgreSQLで null を複数回 union all すると、勝手に text型になる?

SQL
スポンサーリンク

現象の発生時

下記のようなSQLを実行してみてください。

select 1, 'text', null
union all
select 2, 'text', null
union all
select 3, 'text', 1

すると、下記のようなエラーが返ります。

ERROR:  UNION types text and integer cannot be matched
LINE 5: select 3, 'text', 1

解決方法

null と null が 和集合(union all)で二回続くと、text型に認識されるようです。そのため、下記のようにします。

select 1, 'text', cast( null as integer ) 
union all
select 2, 'text', null
union all
select 3, 'text', 1

コメント

タイトルとURLをコピーしました