web-dev-qa-db-ja.com

変換配列タイプ

私はテーブル列にあり、そのタイプは_CHARACTER VARYING[]_(つまり配列)です。

他の配列と既存の行を連結する必要があります

これは私のコードです:

_UPDATE my_table SET
col = array_cat(col, ARRAY['5','6','7'])   
_

返されたエラー:function array_cat(character varying[], text[]) does not exist

理由エラーは、配列型が正しく一致しないことですか?

質問:この配列を_ARRAY['5','6','7']_を_CHARACTER VARYING[]_タイプに変換するにはどうすればよいですか?

16
Oto Shavadze

_varchar[]_にキャスト:

_ > SELECT ARRAY['5','6','7']::varchar[], pg_typeof( ARRAY['5','6','7']::varchar[] );

 SELECT ARRAY['5','6','7']::varchar[], pg_typeof( ARRAY['5','6','7']::varchar[] );
  array  |      pg_typeof      
---------+---------------------
 {5,6,7} | character varying[]
_

PostgreSQL固有の_::varchar[]_または標準のCAST(colname AS varchar[])...を使用できますが、配列はデータベースの実装全体で一貫していないため、標準の構文を使用してもそれほどメリットはありません。

35
Craig Ringer