2008 TSQL Используя LTrim (RTrim и все еще имеют пробелы в данных

У меня есть данные я моющийся в старой таблице данных до перемещения его к новому. Одно из полей имеет пробелы в столбце, праве и оставленный. Я написал следующий код, чтобы обратиться к этому и все еще иметь ведущие пробелы?? Объем данных является чистым при использовании этого кода, но по некоторым причинам существуют пробелы до адресов RT... У кого-либо еще был этот тип проблемы?

,CASE   
WHEN PropStreetAddr IS NOT NULL
 THEN  (CONVERT(VARCHAR(28),PropStreetAddr))  
WHEN PropStreetAddr is NOT NULL Then  (Select LTrim(RTrim(PropStreetAddr)) As PropStreetAddr)
     ELSE NULL END  as 'PROPERTY_STREET_ADDRESS'

Демонстрационные выходные данные:

1234 20th St 
  RT 1 BOX 2  
560 King St  
610 Nowland Rd  
  RT 1  
1085 YouAreHere Ln  
  RT 24 Box 12  
7
задан skaffman 30 July 2010 в 19:56
поделиться

2 ответа

Вот выражение, которое будет работать. Я предполагаю, что невидимого контента нет. Вы все равно должны следовать рекомендации @OMG Ponies, если подозреваете это. И я думаю, что выражение PATINDEX можно добавить к этому выражению, если вам нужно иметь дело с невидимым содержимым.

SQL Server CASE обрабатывает только одно предложение WHEN, а затем прерывается. Таким образом, вы никогда не дойдете до второго преобразования данных. Кроме того, все значения NULL будут преобразованы в NULL при использовании функций LTRIM и RTRIM. Таким образом, вам не нужно проверять это, если вы не хотите что-то делать с NULL.

Итак, попробуйте следующее:

CONVERT(VARCHAR(28), LTRIM(RTRIM(PropStreetAddr))) as [PROPERTY_STREET_ADDRESS]
6
ответ дан 6 December 2019 в 07:24
поделиться

Используйте:

WHEN PropStreetAddr is NOT NULL THEN
   (SELECT LTRIM(RTRIM((REPLACE(PropStreetAddr, 
                                SUBSTRING(PropStreetAddr, 
                                          PATINDEX('%[^a-zA-Z0-9 '''''']%', PropStreetAddr), 1), '') AS PropStreetAddr)
6
ответ дан 6 December 2019 в 07:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: