从字符串中删除某些字符

时间:2013-01-14 13:18:16

标签: sql-server tsql

我正在尝试删除某些字符。

目前我输出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

3 个答案:

答案 0 :(得分:82)

您可以使用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

编辑:由于您现在提供了更多详细信息,因此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'

答案 1 :(得分: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' 

答案 2 :(得分:-3)

UPDATE yourtable 
SET field_or_column =REPLACE ('current string','findpattern', 'replacepattern') 
WHERE 1