Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:Menghindari nilai NULL di to_date

Jika start_date adalah NULL, tidak ada pengecualian yang dilemparkan.

select to_date( null, 'mm/dd/yyyy' ) 
  from dual

adalah pernyataan SQL yang benar-benar valid yang mengembalikan NULL.

Kesalahan yang Anda dapatkan sangat menyiratkan bahwa setidaknya beberapa baris di start_date kolom sebenarnya bukan string dalam format yang Anda harapkan atau peta itu ke tanggal yang tidak valid (yaitu string '13/35/2007'). Anda dapat menulis fungsi yang menguji untuk melihat apakah string dapat dikonversi menjadi tanggal dan mengembalikan tanggal yang dikonversi atau NULL. Anda kemudian dapat menggunakannya sebagai ganti to_date .

CREATE OR REPLACE FUNCTION my_to_date( p_str    IN VARCHAR2,
                                       p_format IN VARCHAR2 )
  RETURN DATE
IS
BEGIN
  RETURN to_date( p_str, p_format );
EXCEPTION
  WHEN OTHERS
  THEN
    RETURN NULL;
END;

lalu gunakan my_to_date bukannya to_date . Itu harus menghilangkan kesalahan yang Anda dapatkan. Anda mungkin ingin membersihkan data, untuk menyingkirkan string yang tidak valid.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan semua Pengguna, bahkan mereka yang tidak sesuai dengan kriteria saya

  2. Menghubungkan ke database di Pro C menggunakan Oracle Wallet

  3. Cara Mengekspor Hasil Permintaan Oracle ke File JSON saat menggunakan SQLcl

  4. Penguraian XML di Oracle pl/sql

  5. Cara memasukkan nilai identitas di Oracle menggunakan Entity Framework menggunakan urutan