sql >> データベース >  >> RDS >> PostgreSQL

整数以外の整数の入力構文が無効ですか?

    入力が失敗し、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に変換できません 。




    1. Rのデータフレームから、同じ名前でスキーマ名が異なるMySQLの複数のテーブルにデータをロードする

    2. MariaDB ROW_COUNT()の説明

    3. インデント付きのクエリ出力

    4. MySQL:BEGIN&COMMITを使用して同じクエリで複数のテーブルに挿入します