То, что я пытаюсь сделать, это разделить мои данные по разрывам строк на отдельные поля: Attn, Addr1Field, Addr2Field . Я нашел расположение обоих разрывов строк, но разница не одинакова для каждой строки данных, поэтому я использую выражение в качестве третьего параметра в моей функции Substring()
. Я получаю ошибку Invalid length parameter passed to the LEFT or SUBSTRING function
. На прилагаемом изображении я жестко запрограммировал 34-20, чтобы получить желаемые результаты, но каждая строка может отличаться, поэтому мне нужно иметь возможность использовать выражение.
Select
case
when LEFT(CONVERT(VARCHAR(MAX), soship.fmstreet),5)='ATTN:'
Then SUBSTRING(CONVERT(VARCHAR(MAX), soship.fmstreet), 7,CHARINDEX(CHAR(13)+CHAR(10),CONVERT(VARCHAR(MAX), soship.fmstreet))-1)
Else ' '
End as AttnField,
case
when LEFT(CONVERT(VARCHAR(MAX), soship.fmstreet),5)='ATTN:'
Then SUBSTRING(CONVERT(VARCHAR(MAX), soship.fmstreet),CHARINDEX(CHAR(13)+CHAR(10),CONVERT(VARCHAR(MAX), soship.fmstreet))+2,CHARINDEX(CHAR(13)+CHAR(10),CONVERT(VARCHAR(MAX), soship.fmstreet),CHARINDEX(CHAR(13)+CHAR(10),CONVERT(VARCHAR(MAX), soship.fmstreet))+1) -
CHARINDEX(CHAR(13)+CHAR(10),CONVERT(VARCHAR(MAX), soship.fmstreet)))
Else ''
End as Addr1Field