AS400 тысяч разделитель на числовое поле

Есть ли способ получить число, отформатированное запятой для тысяч чисел?

Согласно документации IBM, это синтаксис:

DECIMAL(:newsalary, 9, 2, ',')

newsalary - строка (поле) 9 - точность 2 - масштаб, это разделитель.

Я старался:

SELECT DECIMAL ( T1.FIELD1 , 15 , 2 , "," ) AS TOTAL FROM TABLE T1

При попытке получить следующее сообщение об ошибке:

Сообщение: [SQL0171] Аргумент 4 функции DECIMAL недействителен.

1 ответ

Решение

DECIMAL преобразует из строкового типа в числовой тип.

Числовые типы не имеют разделителей; только символьные представления чисел имеют разделители.

Какой инструмент вы используете STRSQL, запускать сценарии SQL или что-то еще? Как только вы преобразуете строку в число, инструмент должен добавить соответствующие языковые разделители, когда он отображает числовые данные. Например, в STRSQL:

select decimal('12345.67', 12,2) as mynum
from sysibm.sysdummy1                    

Возвращает:

       MYNUM
   12,345.67

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

Но если вы действительно, действительно, очень хотите это сделать. Вы должны создать пользовательскую функцию (UDF), которая сделает это за вас. Вот статья " Заставьте SQL редактировать так, как вы хотите". Она включает в себя исходные тексты для функции EDITDEC, написанной в ILE RPG, а также определение функции SQL, которое вам необходимо использовать в операторе SQL.

Другие вопросы по тегам