Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка преобразования nvarchar к numeric  [new]
Kuzya987
Member

Откуда:
Сообщений: 2
Искал в сети ответ на совой вопрос но не получилось найти ничего путнего.

Есть следующая задача:

Во внешнем источнике именуемом SAP, хранятся данные продаж. Я выгружаю эти данные с помощью BAPI в БД MS SQL но возникат ошибка (преобразования nvarchar к numeric) на моменте загрузки отрицательных значений. В SAP минусовые продажи отборажаются как "100.00-". Есть ли способ конвертировать эту значение в нятное для MS SQL "- 100.00"?

Спасибо!
19 окт 15, 23:01    [18299951]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования nvarchar к numeric  [new]
TukTuk
Guest
case when RIGHT(str,1)='-' then REVERSE(SUBSTRING(REVERSE(str),1,1,'')) else str end
19 окт 15, 23:13    [18299966]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования nvarchar к numeric  [new]
TukTuk
Guest
case when RIGHT(str,1)='-' then REPLACE(STR,'-','') else str END
19 окт 15, 23:14    [18299968]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования nvarchar к numeric  [new]
Kuzya987
Member

Откуда:
Сообщений: 2
TukTuk
case when RIGHT(str,1)='-' then REPLACE(STR,'-','') else str END


Спасибо!

А можно чуть подробнее как мне внедрить этот код?

Непосредственно выгрузкой данных из САП занимается приложение на .NET, далее запускается процедура на SQL сервере, а сырые данные приходят в неё как табличная переменная:

...

INSERT INTO #TEMP_T

SELECT FADAT, VV000, VV001 FROM @IMPORT

...

Поля VV000 и VV001 - и есть те самые минусовые продажи.
19 окт 15, 23:40    [18300001]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования nvarchar к numeric  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31437
Kuzya987
А можно чуть подробнее как мне внедрить этот код?
...
Поля VV000 и VV001 - и есть те самые минусовые продажи.
Мда.
Вместо поля str подставьте поле VV000
20 окт 15, 02:22    [18300151]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования nvarchar к numeric  [new]
SFlash
Member

Откуда:
Сообщений: 143
declare @Str nvarchar(1000)
SET @Str='100.00-'

select case when RIGHT(@str,1)='-' then Convert(numeric,REPLACE(@Str,'-',''))*-1 else Convert(numeric,@Str) END
20 окт 15, 12:48    [18302076]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка преобразования nvarchar к numeric  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
DECLARE @Str NVARCHAR(1000)='100.00-';
SELECT (1-2*SIGN(CHARINDEX('-',@Str)))*CAST(REPLACE(@Str,'-','') AS DEC(5,2));
20 окт 15, 12:59    [18302147]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить