2013-05-22 1 views
0

Для оракулаНомер функции

Может ли кто-нибудь исправить функцию ниже, чтобы она работала с «числом (10,2)»? Только это условие.

Вот я пришел с функцией ..

CREATE OR REPLACE FUNCTION Fmt_num(N1 in NUMBER) 
RETURN CHAR 
IS 
BEGIN 
RETURN TO_CHAR(N1,'FM9,9999.99'); 
END; 
/

И я могу использовать это с утверждением SQL, как следовать

SELECT Fmt_num(price) from A; 

ответ

1

Это зависит от того, что вы имеете в виду под «работой», и что выход вы хотите. Я думаю, что вы просто хотите обновить формат маска

to_char(n1, 'fm999,999,999.99') 

Это предполагает, однако, что вы хотите использовать жестко закодированную десятичную точку и разделители, и что вы хотите использовать американскую/Европейскую конвенцию о отделяющих числах в наборах 3, а не, скажем, в традиционной индийской системе представления больших чисел.

+0

Благодарим за информацию. Я хочу создать условия для определенного столбца, такого как , столбец с номером (3,2) не может использовать эту функцию. –

+0

@NiickMosqow - Почему вы не можете использовать эту функцию с меньшим числом? Например, если вы передадите 4-значный номер, то результат будет точно идентичен выходу вашей текущей функции. –

0
CREATE OR REPLACE FUNCTION Fmt_num(N1 in NUMBER) 
RETURN CHAR 
IS 
BEGIN 
RETURN TO_CHAR(N1,'FM99,999,999.99'); 
END; 
/
0

Если вы действительно хотите, запятая каждые 4 цифры, вы можете сделать это:

TO_CHAR(N1,'FM9999,9999,9999.99'); 

Однако я бы рекомендовал использовать локализованную версию сейф (G для группирования характера, D для десятичного разделителя):

TO_CHAR(N1,'FM9999G9999G9999D99'); 
Смежные вопросы