例如。我有桌子T1。其中有4列c1 c2 c3和c4。我有c1作为id,c2包含组合名称和地址。 c3和c4是空的。给定id有多行。假设id = 10有10行。
我想要的是id = 10的所有行,我想读取c2,将c2中的值分别作为名称和地址,将名称存储在c3中,将地址存储在c4中。
如何在SQL Server 2005/2008中执行此操作?
由于
答案 0 :(得分:2)
尝试:
UPDATE YourTable
SET c3=LEFT(c2,CHARINDEX(' ',c2))
,c4=RIGHT(c2,LEN(c2)-CHARINDEX(' ',c2))
WHERE c1=@YourIdValue
在问题中,没有描述separate values in c2 as name and address
的方法,所以我只根据找到的第一个空格拆分列c2。 c2 ='abcd efgh'变为:c3 ='abcd',c4 ='efgh'。
工作样本:
DECLARE @YourTable table (c1 int,c2 varchar(10),c3 varchar(10),c4 varchar(10))
INSERT @YourTable VALUES (1,'aaaa bbbb',null,null)
INSERT @YourTable VALUES (1,'aaa bbb' ,null,null)
INSERT @YourTable VALUES (1,'aa bb' ,null,null)
INSERT @YourTable VALUES (1,'a b' ,null,null)
INSERT @YourTable VALUES (2,'222 333' ,null,null)
INSERT @YourTable VALUES (2,'aaa bbb' ,null,null)
INSERT @YourTable VALUES (3,'a b' ,null,null)
DECLARE @YourIdValue int
SET @YourIdValue=1
UPDATE @YourTable
SET c3=LEFT(c2,CHARINDEX(' ',c2))
,c4=RIGHT(c2,LEN(c2)-CHARINDEX(' ',c2))
WHERE c1=@YourIdValue
SELECT * FROM @YourTable
输出:
c1 c2 c3 c4
----------- ---------- ---------- ----------
1 aaaa bbbb aaaa bbbb
1 aaa bbb aaa bbb
1 aa bb aa bb
1 a b a b
2 222 333 NULL NULL
2 aaa bbb NULL NULL
3 a b NULL NULL
(7 row(s) affected)