2013-01-14 6 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 

원하는 출력 : 당신은 Replace 기능을 사용할 수 있습니다

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

문은 무엇인가? 그리고 예제 데이터? –

+2

그래서 모든 도시를 하드 코딩하여 반복 할 것입니까? 아니면 좀 더 일반적으로 할 수있는 무언가가 필요합니까? 그렇다면 데이터 정규화를 고려해야합니다. 'New London Connecticut'이나'Porte de la Prairie France'와 같은 문자열로는 어려움을 겪을 것입니다 ... –

+0

아니요, cityname을 하드 코딩하지 않을 것입니다. 도시명을 일반적으로 바꾸기 함수에 삽입 할 수있는 또 다른 테이블이 있습니다 – UrKll

답변

53

같은;

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 

편집 : 지금 세부 정보를 입력 했으므로 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