PL SQL - преобразовать числовое значение в varchar (проценты) - PullRequest
4 голосов
/ 03 августа 2011

У меня есть запрос, который использует выходные данные (R1, R2) двух подзапросов для их разделения:

select a.R1/b.R2*100.0 as Result
from
(query1) a,
(query2) b

Выход деления - это (десятичное) число, а также R1,Выводы R2.

Я хочу добавить к Результату знак '%' (т. Е. 10,75%), но при использовании решения, подобного приведенному ниже, возвращается ошибка 01722 = неверное число

select cast(cast(a.R1/b.R2*100.0 as decimal(10,2)) as varchar(10)) + '%' as Result
from
(query1) a,
(query2) b

1 Ответ

7 голосов
/ 03 августа 2011

Добро пожаловать!

Замените оператор сложения '+' на оператор конкатенации SQL-Pl / sql: ' || '.

Мы не можем использовать буквенные литералы напрямую в моделях числового формата , как при преобразовании даты и времени.

Оператор конкатенации SQL

Оператор конкатенации PL / SQL

Числовой формат моделей


Примеры:

select cast(round(10.75, 2) as varchar(10)) || '%' as result
from   dual

select to_char(round(1234567890.29, 2),'9G999G999G999D99' ) || '%' as result
from   dual

PS. Маршрут всегда один и тот же:

Как спросить

Все "оракулы" здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...