我有一个名为ADDRESS
的列,正如人们猜测的那样,它以100 NE 26th ST
的格式在其中提供地址。所以基本上它的街道地址。我想要做的是在数字后添加BLK
,最终结果是100 BLK NE 26th ST
。现在我运行了一个将00
更改为00 BLK
的简单脚本,但是当有一个名为100th ST
的街道名称时,它会将其炸毁。
所以基本上有一种方法可以在门牌号码之前和街道名称之前添加BLK
吗?
答案 0 :(得分:1)
一种可能性是你要添加" BLK"第一个空间在哪里。您可以通过以下方式完成此任务:
select stuff(address, charindex(' ', address), 1, ' BLK ')
这个逻辑适用于你在问题中描述的情况,但它可能无法完全归结为你真正需要的东西 - 取决于地址中的其他怪癖。
答案 1 :(得分:1)
DECLARE @Address TABLE(Address1 VARCHAR(MAX))
INSERT INTO @Address VALUES
('100 NE 26th ST.'),
('100th NE 26th ST.'),
('P.O. Box 133'),
(''),
(NULL)
SELECT CASE WHEN Address1 LIKE '[0-9]%' THEN
STUFF(Address1,CHARINDEX(' ',Address1),1,' BLK ')
ELSE Address1 END
FROM @Address
戈登是对的东西..但你可能想要检查po box或空白..或null
修改强>
根据您的评论...更新您的人员表,您只需这样做。
UPDATE People
SET Address1 = CASE WHEN Address1 LIKE '[0-9]%'
THEN STUFF(Address1,CHARINDEX(' ',Address1),1,' BLK ')
ELSE Address1 END