Member 13929071 Ответов: 2

Ошибка преобразования при преобразовании значения nvarchar '1819000030-1' в тип данных int.


Объявить @DocEntry nVarchar(10)
НАБОР @DocEntry = (выберите конвертировать(nVarchar,Max(U_DocNum),112) из [@TI_GoodReceipt])


Выберите T1.DocDate,T1.DocNum,T1.docentry,t1.CardName,T3.expdate,T1.NumAtCard,T3.notes,T0.BatchNum,T0.Quantity,
T3.DistNumber,t2.WhsCode,t2.U_IsInsp,T2.ItemCode,t2.Dscription,T1.U_BOENO,T2.unitMsr от IBT1 T0
левое соединение OPDN T1 на T0.BaseType=T1.ObjType
и T0.BaseEntry=T1.Доцентри
внутреннее соединение pdn1 T2 на T1.DocEntry =t2.DocEntry и T0.quantity <> t2.quantity
левое наружное соединение obtn T3 на T0.BatchNum = T3.AbsEntry
где T1.DocEntry = '30'

Что я уже пробовал:

Пожалуйста, помогите мне с этой ошибкой запроса

Dave Kreskowiak

Причина, по которой он терпит неудачу, заключается в характере" -". Поскольку символ " - " встречается где-то в середине строки, а не в начале ее, обозначая отрицательное число, строка больше не представляет собой целое значение.

Если вы думаете, что эта строка представляет собой "1819000030 минус 1", подумайте еще раз. Преобразование в INT не будет интерпретировать строку таким образом и не будет делать математику за вас.

RedDk

Что такое "IBT1" и каково его отношение к "T0"?

2 Ответов

Рейтинг:
1

OriginalGriff

Посмотрите на сообщение об ошибке:

Conversion failed when converting the nvarchar value '1819000030-1' to data type int.
Это не целое число, поэтому, когда SQL пытается преобразовать его, он терпит неудачу.

Почему это не целое число? Не знаю - в конце концов, это ваши данные, и у нас нет к ним доступа.
Поэтому начните с выяснения, откуда берется значение '1819000030-1', а затем вы можете начать работать над тем, какая часть вашего запроса пытается преобразовать его. Затем вы можете решить, существует ли ошибка проектирования таблицы, ошибка данных или ошибка запроса.

Но мы не можем сделать это для вас - у нас нет доступа к вашим данным вообще!


Рейтинг:
1

Patrice T

Цитата:
Ошибка преобразования при преобразовании значения nvarchar '1819000030-1' в тип данных int.

Поскольку '1819000030-1' не является целым числом, '-' допускается только в первой позиции для отрицательных чисел.
Это должно быть очевидно для всех.