Я пытаюсь преобразовать этот запрос из базы данных доступа для работы в SQL Server 2008 и застрял. Я знаю, что есть различия, но я не уверен, что происходит, и, видимо, я не очень хорош в этом. Любая помощь будет оценена по достоинству.Запрос доступа к запросу SQL Server 2008
Доступ
Mid(Trim([SC01039]),
InStrRev(Trim([SC01039])," ")+3,4)
AS ProductType
SQL Server 2008 (Это то, что я попытался изменить его к)
Substring(RTrim(LTrim([SC01039])),
Right(RTrim(LTrim([SC01039])),
CHARINDEX(' ',RTrim(LTrim([SC01039]))))+3,4)
AS ProductType
Ошибка я получаю является
«Конверсия удалось при преобразовании значения nvarchar 'L318' к данным типа int. "
Почему он пытается преобразовать полученный текст в целое число? Мое предположение заключается в том, что запрос говорит: «Найдите позицию пространства, ближайшего справа от строки, теперь добавьте 3 к этой позиции и дайте мне следующие 4 символа». Кажется, что проблема связана с данными, а не с запросом (что делает, если нет места? Или строка равна нулю?) Я не знаю ...
Я даже близко подошел? : P
Есть смешанные символы в SC01039, но это пример:
SC01039 : Expected Output
------------- : ---------------
QC 06999911 : 9999
SW 12FMT116 : FMT1
26RMF399 : RMF3
08 : [empty]
[empty] : [empty]
Видимо это всегда 4-х символов, начиная с 3 справа от первого найденного свободного пространства (поиск пространства справа -налево). Некоторые данные в SC01039 имеют несколько пробелов (то есть: 09 TVR 012 2, в этом случае он ничего не возвращает, и я считаю, что все в порядке).
показывают данные присутствует в столбце 'SC01039'.' Charindex' часть пошла не так. –
Спасибо за помощь.;) –