В SQL я пытаюсь взять адрес переменной длины и разделить его на возврат каретки на два отдельных поля. У меня есть адрес успешно разделенный, но каждый так часто (17 из 300 раз) правая сторона адреса выходит неверно.SSMS - SQL - CHARINDEX при возврате каретки
adr1: RM320 VOTECH (Символьные (10)) аЬс Буфорд ПР,
ADR2: ПОЛЕ АТЛЕТИК BLDG (Символьный (10)) аЬс 15TH AVE SE,
Там нет места до или после того, как возврат каретки.
select replace(RIGHT(REPLACE('RM320 VOTECH
abc BUFORD AVE,' , LEFT('RM320 VOTECH
abc BUFORD AVE,' ,
CHARINDEX(CHAR(10) , 'RM320 VOTECH
abc BUFORD AVE,')) , '') , CHARINDEX(CHAR(10) , 'RM320 VOTECH
abc BUFORD AVE,')),',','')
Это возвращает: "Ьс Буфорд AVE", когда он должен вернуться "Abc Буфорд пр"
select replace(RIGHT(REPLACE('FIELD ATHLETIC BLDG
abc 15TH AVE SE,' , LEFT('FIELD ATHLETIC BLDG
abc 15TH AVE SE,' ,
CHARINDEX(CHAR(10) , 'FIELD ATHLETIC BLDG
abc 15TH AVE SE,')) , '') , CHARINDEX(CHAR(10) , 'FIELD ATHLETIC BLDG
abc 15TH AVE SE,')),',','')
Это возвращает: "а 15TH AVE SE" правильно.
Как два одинаковых выбора возвращают разные результаты?
Это может быть больше, чем вам нужно, но [эта страница] (http://sqlperformance.com/2012/07/t-sql-queries/split-strings) содержит множество подробностей о разделении строк. – Turophile