DB2 SQL — Настройка десятичных точек на основе значения

#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)
  

Приведение выполняется только для того, чтобы убедиться, что это десятичное поле (определение должно быть достаточно большим для ваших данных)