入力が失敗し、ARRAYコンストラクター 関数の型の解決 に到達する前に -呼び出しに含めるべきではないARRAYコンストラクターを削除すると、他の型の不一致が原因でさらに多くのエラーメッセージが表示されます。
解決策は、一致するタイプの個別のパラメータを渡すことです。 、ない 配列。残りは私たちが見たものの単なる説明です。
実際に起こったこと
配列には同じタイプの値のみを含めることができますが、入力には数値定数
数値以外の
text[]
に解決したい場合 (text
の配列 )、次のような文字列リテラルを提供する必要があります:
SELECT ARRAY['1004', '2', '1079412', 'WwLEA6XZ0'];
または、次のように直接配列リテラル:
SELECT '{1004, 2, 1079412, WwLEA6XZ0}'::text[];
ただし、数値定数を使用してARRAYコンストラクターを開始すると、追加できるのは数値型のみです。または、少なくとも同じタイプに強制変換できるコンテンツを含む文字列リテラル。あなたはできた :
SELECT ARRAY[1004, 2, 1079412, '1'];
...結果としてint[]
。または:
SELECT ARRAY[1004, 2, 1079412, 1.0];
または:
SELECT ARRAY[1004, 2, 1079412.0, '1.0'];
...どちらもnumeric[]
になります 。
ただし、 ARRAY[1004, 2, 1079412, 'WwLEA6XZ0V']
ストライク> 違法であり、当然そうです。
配列コンストラクターの型解決の正確なルールは、マニュアルのこの章に記載されています。"型変換"-"UNION、CASE、および関連するコンストラクター " 。あなたの旅は次の場所で終わります:
文字列リテラル'WwLEA6XZ0V' integer
に変換できません 。