2013-01-14 8 views
29

Я пытаюсь удалить определенные символы.Удалить определенные символы из строки

На данный момент у меня есть выход cityname district, но я хочу удалить cityname.

SELECT Ort FROM dbo.tblOrtsteileGeo 
WHERE GKZ = '06440004' 

Выход:

Büdingen Aulendiebach 
Büdingen Büches 
Büdingen Calbach 
Büdingen Diebach 
Büdingen Dudenrod 
Büdingen Düdelsheim 

Желаемый результат:

Aulendiebach 
Büches 
Calbach 
Diebach 
Dudenrod 
Düdelsheim 
+0

Что такое утверждение? И пример данных? –

+2

Так вы собираетесь повторить это, жестко кодируя каждый город? Или вам нужно что-то, что сделает это более общим? Если это так, вам следует рассмотреть возможность нормализации ваших данных. У вас будет трудное время с такими строками, как «New London Connecticut» или «Porte de la Prairie France» ... –

+0

Нет, я не собираюсь жестко закодировать имя города. Существует другая таблица, в которой я могу получить имя города, чтобы вставить его в функцию замены. – UrKll

ответ

53

Вы можете использовать Replace функцию;

REPLACE ('Your String with cityname here', 'cityname', 'xyz') 
--Results 
'Your String with xyz here' 

Если применить это к колонке таблицы, где stringColumnName, cityName both are columns of YourTable

SELECT REPLACE(stringColumnName, cityName, '') 
FROM YourTable 

Или, если вы хотите удалить 'cityName' строку из из положить колонки затем

SELECT REPLACE(stringColumnName, 'cityName', '') 
FROM yourTable 

EDIT: Поскольку теперь вы указали более подробную информацию, функция REPLACE не является лучшим методом для сортировки вашей проблемы Лем. Следующим является другой способ сделать это. Также @MartinSmith дал хороший ответ. Теперь у вас есть выбор, чтобы выбрать еще раз.

SELECT RIGHT (O.Ort, LEN(O.Ort) - LEN(C.CityName)-1) As WithoutCityName 
FROM tblOrtsteileGeo O 
     JOIN dbo.Cities C 
     ON C.foo = O.foo 
WHERE O.GKZ = '06440004' 
+0

как только я смогу .. придется подождать еще 4 минуты – UrKll

+2

@Kaf Что такое спешка? Вы беспокоитесь, что может возникнуть лучший ответ? –

+0

@AaronBertrand: Вы, должно быть, шутите. Не за что. Поэтому он - новый пользователь. – Kaf

7

Одна проблемы с REPLACE будет где название городов содержит название района. Вы можете использовать что-то вроде этого.

SELECT SUBSTRING(O.Ort, LEN(C.CityName) + 2, 8000) 
FROM dbo.tblOrtsteileGeo O 
     JOIN dbo.Cities C 
     ON C.foo = O.foo 
WHERE O.GKZ = '06440004' 
-1
UPDATE yourtable 
SET field_or_column =REPLACE ('current string','findpattern', 'replacepattern') 
WHERE 1 
Смежные вопросы