PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kesalahan sintaks input tidak valid untuk integer untuk non-integer?

Masukan Anda gagal dengan kesalahan sintaks di Konstruktor ARRAY bahkan sebelum Anda mencapai resolusi jenis fungsi - di mana Anda akan mendapatkan lebih banyak pesan kesalahan karena ketidakcocokan jenis lain setelah Anda menghapus konstruktor ARRAY yang seharusnya tidak ada dalam panggilan sama sekali.

Solusi Anda adalah meneruskan parameter terpisah dari jenis pencocokan , tidak sebuah array. Selebihnya hanyalah penjelasan dari apa yang kita lihat.

Apa yang sebenarnya terjadi

Array hanya dapat menyertakan nilai dari jenis yang sama, tetapi input Anda menggabungkan konstanta numerik dengan literal string non-numerik , yang tidak dapat diselesaikan.

Jika Anda ingin menyelesaikannya menjadi text[] (array text ), Anda harus memberikan literal string seperti:

SELECT ARRAY['1004', '2', '1079412', 'WwLEA6XZ0'];

Atau array literal secara langsung, seperti:

SELECT '{1004, 2, 1079412, WwLEA6XZ0}'::text[];

Tetapi begitu Anda memulai konstruktor ARRAY dengan konstanta numerik, hanya tipe numerik yang sah untuk ditambahkan. Atau setidaknya string literal dengan konten yang dapat dipaksa ke tipe yang sama. Anda bisa :

SELECT ARRAY[1004, 2, 1079412, '1'];

... menghasilkan int[] . Atau:

SELECT ARRAY[1004, 2, 1079412, 1.0];

Atau bahkan:

SELECT ARRAY[1004, 2, 1079412.0, '1.0'];

... keduanya menghasilkan numeric[] .

Tapi ARRAY[1004, 2, 1079412, 'WwLEA6XZ0V'] adalah ilegal dan memang seharusnya demikian.

Aturan pasti resolusi tipe untuk konstruktor array dapat ditemukan di bab manual ini:"Konversi Jenis" - "UNION, CASE, dan Konstruksi Terkait" . Perjalanan Anda berakhir pada:

Karena string literal 'WwLEA6XZ0V' tidak dapat dikonversi ke integer .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gabung Kiri Lateral dan agregat array

  2. Apa yang harus diindeks pada kueri dengan banyak kolom dalam klausa WHERE

  3. Ubah skema beberapa fungsi PostgreSQL dalam satu operasi?

  4. Cara mendapatkan nilai rata-rata untuk interval waktu di Postgres

  5. Nilai Kunci Utama Tidak Bertambah dengan Benar