Cách duy nhất là đặt giá trị thích hợp cho nls_numeric_characters
rộng phiên tham số và sử dụng to_number()
chức năng mà không chỉ định mặt nạ định dạng.
Đây là một ví dụ đơn giản, ký tự phân tách thập phân là dấu phẩy ","
và các ký tự số chứa dấu chấm "."
dưới dạng ký tự phân tách thập phân:
SQL> show parameter nls_numeric_characters;
NAME TYPE VALUE
------------------------------------ ----------- ------
nls_numeric_characters string ,.
SQL> with t1(col) as(
2 select '12345.567' from dual union all
3 select '12.45' from dual
4 )
5 select to_number(col) as res
6 from t1;
select to_number(col)
*
ERROR at line 5:
ORA-01722: invalid number
SQL> alter session set nls_numeric_characters='.,';
Session altered.
SQL> with t1(col) as(
2 select '12345.567' from dual union all
3 select '12.45' from dual
4 )
5 select to_number(col) as res
6 from t1;
res
--------------
12345.567
12.45