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

Bagaimana cara mengonversi teks menjadi angka secara efisien di Oracle PL/SQL dengan NLS_NUMERIC_CHARACTERS non-default?

Berikut ini akan berfungsi:

SELECT to_number(:x, 
                 translate(:x, '012345678-+', '999999999SS'), 
                 'nls_numeric_characters=''.,''') 
  FROM dual;

Ini akan membangun argumen kedua yang benar 999.999999 dengan translate yang efisien jadi Anda tidak perlu tahu berapa banyak angka yang ada sebelumnya. Ini akan bekerja dengan semua format angka Oracle yang didukung (hingga 62 digit signifikan tampaknya dalam 10.2.0.3).

Menariknya, jika Anda memiliki string yang sangat besar to_number(:x) akan bekerja sedangkan metode ini akan gagal.

Sunting:dukungan untuk angka negatif berkat sOliver.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perintah Spool:Jangan menampilkan pernyataan SQL ke file

  2. Tambahkan Instans RAC Baru Secara Manual

  3. Mengakses tabel pengguna lain dalam Oracle Stored Procedure

  4. COSH() Fungsi di Oracle

  5. RMAN Daftar perintah cadangan