我有一张桌子,上面有关于住在特定地区的家庭成员的详细信息。由于这些是政府数据,因此存在很多错误。就像在一列'houseno'中一样,有2个值'Ti 303'和'303'是相同的门牌号。
最后,我想要用'303'更新Ti 303。 (因为这些是住在同一所房子里的家庭成员)
类似地,'P-101'和'P / 101'是相同的houseno,我希望它被转换为'P-101'或'P / 101'。我尝试过差异,子串等,但现在对我有用。请帮忙!
答案 0 :(得分:0)
您应该使用REPLACE
命令。对于这两个示例,您可以按如下方式对其进行硬编码:
select REPLACE('Ti 303','Ti ','')
select REPLACE('P-101','P-','P/')
您可以在REPLACE
命令中使用UPDATE
,而不是SELECT
。{/ p>
如果要在具有更新的列中替换要替换的字符串列表,则可以将这些字符串放入表中。然后在REPLACE
命令中使用它来替换字符串模式。
答案 1 :(得分:0)
你只需要删除字符来比较内容吗?
CREATE FUNCTION dbo.FN_GetNumberPart (@strMixedString VARCHAR(200))
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @NumberPart INT
-- Get the next non numeric character position
SET @NumberPart = PATINDEX('%[^0-9]%', @strMixedString)
-- While there are non numeric characters remaining
WHILE @NumberPart > 0
BEGIN
-- Remove the non numeric character from the string
SET @strMixedString = STUFF(@strMixedString, @NumberPart , 1, '' )
-- Get the next non numeric character position
SET @NumberPart = PATINDEX('%[^0-9]%', @strMixedString)
END
-- Spit out the cleansed string
RETURN ISNULL(@strMixedString,0)
END
GO
SELECT dbo.FN_GetNumberPart(HouseNo)
from TblAddresses