2012-10-19 66 views
11

Tôi ở Braxin và định dạng đơn vị tiền tệ của chúng tôi là 'R $ 9,999,00'.Oracle SQL - thay đổi dấu chấm thập phân cho dấu phẩy

Tôi đang cố gắng chọn trường và thay đổi định dạng của trả lại. Tuy nhiên, có vẻ như tôi không thể làm điều đó. Tôi đã thử:

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.'; 

SELECT to_char(10,'9,999.00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL 

Không ai trong số những người làm việc. Không chắc chắn nếu nó có thể là khách hàng của tôi (tôi đang trên Ubuntu bằng cách sử dụng sqldeveloper), hoặc nếu tôi đang làm điều gì đó sai trái.

Bất kỳ ý tưởng nào?

Trả lời

16

Sử dụng

SELECT to_char(10,'9G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL 

G là biểu tượng cho hàng ngàn SEPARATOR D là dành cho phân cách thập phân

+2

: Nếu số này tăng lên 8 chữ số thì cách này sẽ được phục vụ như thế nào? –

+0

Cảm ơn! Cả hai câu trả lời là chính xác! –

+0

Breaks nếu kết quả bằng không. Không chính xác –

3

Tôi nghĩ rằng mặt nạ dạng của bạn là wrong.Please thử định dạng mặt nạ này:

SELECT to_char(10000,'99G990D00', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL 

đảm bảo bạn sẽ sử dụng đúng số '9' hàng đầu trong mặt nạ định dạng cho số lớn hơn

+0

Điều này có hiệu quả nếu kết quả bằng không. Đây là câu trả lời chính xác. –

1

Tôi đã giải quyết vấn đề bằng cách:

SELECT TO_CHAR(1000000000,'999G999G999G999D99','NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL; 

để định dạng số theo tỷ. Tôi nghĩ rằng nó giúp.

+0

Cảm ơn Omar đã sửa chữa. – ddsultan

-1
CREATE OR REPLACE FUNCTION APPS.EX_number_format(ff number) RETURN char IS 

xx varchar2(100); 
yy varchar2(1); 
tt varchar2(100); 
x number:=0; 
begin 
xx:=to_char(ff,'99G990G990G990G990G990D00'); 
for i in 1..length(xx) loop 
yy:=substr(xx,i,1); 
if yy in ('1','2','3','4','5','6','7','8','9') then 
x:=i; 
exit; 
end if; 
end loop; 

tt:=substr(xx,x,length(xx)); 
return tt; 

END EX_number_format; 

chọn EX_number_format (1000) từ kép;

1,000.00

chọn EX_number_format (1859684500) từ kép;

1,859,684,500.00

+0

Chỉ cần thực hiện qua [Cách trả lời trên StackOverflow] (http://stackoverflow.com/help/how-to-answer), thay vì viết trực tiếp các câu SQL làm câu trả lời. – LuFFy

Các vấn đề liên quan