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

Bagaimana cara saya melemparkan string ke integer dan memiliki 0 jika terjadi kesalahan dalam pemeran dengan PostgreSQL?

Saya sendiri baru saja bergulat dengan masalah yang sama, tetapi tidak ingin overhead suatu fungsi. Saya datang dengan pertanyaan berikut:

SELECT myfield::integer FROM mytable WHERE myfield ~ E'^\\d+$';

Postgres mempersingkat persyaratannya, jadi Anda seharusnya tidak mendapatkan non-bilangan bulat yang mengenai ::integer cast Anda. Ini juga menangani nilai NULL (tidak akan cocok dengan regexp).

Jika Anda menginginkan nol daripada tidak memilih, maka pernyataan CASE akan berfungsi:

SELECT CASE WHEN myfield~E'^\\d+$' THEN myfield::integer ELSE 0 END FROM mytable;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa saya tidak dapat mengecualikan kolom dependen dari `GROUP BY` saat saya mengagregasi berdasarkan kunci?

  2. Kolom tabel kenaikan otomatis

  3. Bagaimana saya bisa mengimpor file JSON ke PostgreSQL?

  4. Bagaimana cara menghindari beberapa evaluasi fungsi dengan sintaks (func()).* dalam kueri SQL?

  5. Menyortir nilai nol setelah yang lainnya, kecuali spesial