исправление данных sql, НАПРИМЕР 000-575.33

#sql #sql-server

#sql #sql-сервер

Вопрос:

Мне было предоставлено несколько тысяч записей переменных, таких как приведенная выше. Все они должны состоять из 10 символов, и я предполагаю, что они просто без разбора дополняют их нулями. Как я могу переместить отрицательный знак влево, чтобы 000-575.33 он стал -000575.33 таким?

Комментарии:

1. Если это число, почему бы не сохранить его как числовой тип данных? Кроме того, для какой СУБД это нужно?

2. - Всегда ли это четвертый символ или он находится в разных местах в разных записях?

3. '-'||replace(the_column, '-', '')

4. microsoft sql server, varchars, отрицательный знак может быть где угодно или отсутствовать вообще (как и в некоторых совершенно хороших).

5. Все ли они должны иметь - префикс? Или те, у кого нет - , не нужны?

Ответ №1:

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

 declare @v varchar(64) = '000-575.33'
select 
    case 
        when CHARINDEX('-',@v) > 1 then '-'   replace(@v,'-','')
        else @v
    end