TSQL在列中追加数据

时间:2015-11-20 19:32:27

标签: sql sql-server tsql

我有一个名为ADDRESS的列,正如人们猜测的那样,它以100 NE 26th ST的格式在其中提供地址。所以基本上它的街道地址。我想要做的是在数字后添加BLK,最终结果是100 BLK NE 26th ST。现在我运行了一个将00更改为00 BLK的简单脚本,但是当有一个名为100th ST的街道名称时,它会将其炸毁。

所以基本上有一种方法可以在门牌号码之前和街道名称之前添加BLK吗?

2 个答案:

答案 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