Saya mengimpor data dari tabel yang memiliki umpan mentah di Varchar, saya perlu mengimpor kolom di varchar ke dalam kolom string. Saya mencoba menggunakan <column_name>::integer
jugato_number(<column_name>,'9999999')
tetapi saya mendapatkan kesalahan, karena ada beberapa bidang kosong, saya perlu mengambilnya sebagai kosong atau nol ke tabel baru.
Mohon beri tahu saya jika ada fungsi untuk hal yang sama.
postgresql
casting
Vijay DJ
sumber
sumber
Jawaban:
Tebakan liar: Jika nilai Anda adalah string kosong, Anda dapat menggunakan NULLIF untuk menggantinya dengan NULL:
sumber
Anda bahkan dapat melangkah lebih jauh dan membatasi bidang gabungan ini seperti, misalnya: -
sumber
Jika Anda perlu memperlakukan kolom kosong sebagai
NULL
s, coba ini:Di sisi lain, jika Anda memang memiliki
NULL
nilai yang perlu Anda hindari, cobalah:Saya setuju, pesan kesalahan akan banyak membantu.
sumber
Satu-satunya cara agar saya tidak mengalami kesalahan karena NULL, atau karakter khusus atau string kosong adalah dengan melakukan ini:
sumber
WHERE <column> != NULL
?Saya tidak dapat berkomentar (reputasi terlalu kecil? Saya cukup baru) tentang posting Lukas.
Pada pengaturan PG saya
to_number(NULL)
tidak berfungsi, jadi solusi saya adalah:sumber
NULLIF()
pendekatan yang kurang bertele-tele . Standar sebenarnya mendefinisikan NULLIF sebagai bentuk predikat CASE.Jika nilai mengandung karakter non-numerik, Anda dapat mengonversi nilai menjadi integer sebagai berikut:
Operator CASE memeriksa <kolom>, jika cocok dengan pola bilangan bulat, ia mengubah tarif menjadi bilangan bulat, jika tidak ia mengembalikan 0
sumber
Anda dapat menggunakan kueri ini
sumber
Masalah umum
Ketikkan casting string apa pun secara naif menjadi integer seperti itu
Seringkali hasil dari kesalahan terkenal:
Masalah
PostgreSQL tidak memiliki fungsi yang telah ditentukan sebelumnya untuk aman mengetikkan string apa pun ke dalam integer.
Larutan
Buat fungsi yang ditentukan pengguna yang terinspirasi oleh fungsi intval () PHP .
Pemakaian
sumber
Dua sen saya untuk mentransmisikan string apa pun ke integer:
Berdasarkan https://www.postgresqltutorial.com/regexp_replace/ .
sumber