отрицательные числовые значения и отрицательный знак в конце. Нужно выражение для форматирования отрицательного знака от конца до начала числовых значений

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

для ex:

значений:

22.50
-22.60
22.90-
23.46-
24.50-

Я хочу, чтобы выход как

22.50
-22.60
-22.90
-23.46
-24.50
-1
задан 13 August 2018 в 14:46

3 ответа

Предполагая, что значение является строкой, тогда:

select (case when val like '%-' then '-' + replace(val, '-', '')
             else val
        end)

Если значение хранится как число, то приложение добавляет знак минуса в конец. Вы можете преобразовать в строку в базе данных, что-то вроде cast(val as varchar(255)). Сначала база данных должна помещать отрицательный знак.

2
ответ дан 15 August 2018 в 17:02
  • 1
    У меня есть тип данных как числовой (10,5) в таблице адресатов, и я хочу получить выражение столбца, чтобы проверить, идет ли отрицательный знак в конце номера для ex: 22.45- затем отформатировать отрицательный знак на перед номером и вставьте его в таблицу определения как -22.45 – sibananda pani 13 August 2018 в 15:09
  • 2
    @sibanandapani. , , Если тип данных является числовым, то прикладной уровень помещает отрицательный знак. Вы можете просто передать значение в строку (в базе данных), чтобы убедиться, что значение начинается с начала. – Gordon Linoff 13 August 2018 в 15:11

Я думаю, что OP нуждается в решении SSIS:

Использовать производный столбец с if if else else (test? true: false)

right(val,1) = "-" ? (DT_NUMERIC,10,5) ("-" + left(val,len(val)-1)) : (DT_NUMERIC,10,5) val

Это предполагает, что val считывается изначально как строка.

0
ответ дан 15 August 2018 в 17:02

Следующий запрос предполагает следующее:

вы хотите insert into a table, названный DestinationTable DestinationTable, для простоты ваш единственный column, называемый destinationColumn значения хранятся в SourceTable.sourceColumn, ни один из них не является null s, пустые строки или не числовые значения

insert into DestinationTable(destinationColumn) select case when right(sourceColumn, 1) = '-' then concat('-', substring(sourceColumn, 1, length(sourceColumn) - 1)) else sourceColumn end from SourceTable;

0
ответ дан 15 August 2018 в 17:02

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

Похожие вопросы: