#sql #db2 #decimal
#sql #db2 #десятичная
Вопрос:
Я хочу замаскировать десятичные поля пользовательскими десятичными точками. Вот пример того, что я собираюсь сделать.
----------------------------------------------
-fieldName----fieldValue----result after mask-
----------------------------------------------
505 2 5.05
76812 5 .76812
8185 3 8.185
Все эти столбцы хранятся как INT
или a DEC
без каких-либо десятичных знаков.
Может быть, DB2
есть что-то похожее на FORMAT()
SqlServer
функцию? Это маскирует значение и делает не совсем то, что я хотел бы, но, тем не менее, это начало.
Спасибо
Ответ №1:
Используйте встроенные математические функции и делите в степени 10.
CAST(fieldName AS DOUBLE) / POWER(10, fieldValue)
Если вы сохраняете эти числа таким образом, потому что они слишком большие, то в качестве альтернативы вы можете преобразовать их в VARCHAR
, тогда вы можете использовать SUBSTR()
.
Комментарии:
1. Мне нравится этот вариант! Я скоро протестирую это.
2. Спасибо! Мы использовали что-то вроде этого. Для всех, кто использует это, будьте осторожны, это превращает значение в
float
. С этим будет несколько сложно справиться, если вы не будете осторожны.
Ответ №2:
Как насчет математического решения?
cast(fieldName as decimal(12,6)) / power(10, fieldvalue)
Приведение выполняется только для того, чтобы убедиться, что это десятичное поле (определение должно быть достаточно большим для ваших данных)