Hãy nhớ rằng bạn đang biến đổi một số thành một chuỗi. Con số không có bất kỳ ý nghĩa nào về "," hoặc "." hoặc bất cứ thứ gì - nó là một con số.
Bí quyết là lấy TO_CHAR
hàm để chuyển đổi số nội bộ thành biểu diễn chuỗi mà bạn muốn.
Đây là một ví dụ hoạt động:
SELECT to_char(0.00235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
0,00235
SELECT to_char(156.45823,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
156,45823
SELECT to_char(-0.0235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
-0,0235
SELECT to_char(-156.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
-156,45623
SELECT to_char(123456789.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
123456789,45623
Các phần liên quan của mặt nạ:
FM
được sử dụng để cắt bỏ các khoảng trống ở đầu và cuối mà Oracle thường sử dụng để xóa các số.
D
là điểm cơ số, tùy thuộc vào cài đặt NLS của bạn.
NLS_NUMERIC_CHARACTERS ...
là ghi đè cài đặt NLS cục bộ của bạn - điều này có thể không cần thiết nếu ngôn ngữ của bạn sử dụng dấu phẩy cho số thập phân, nhưng đó là một cách bạn có thể buộc thực hiện hành vi này trong cơ sở dữ liệu, chẳng hạn như cài đặt Bắc Mỹ.