我试图在我拥有的数据库表中将1列分成2列。我在这里发现了一些问题,这些问题可以帮助您选择数据,但不会自行插入数据。
从上图中可以清楚地看到,我试图将ID分为第一和第二。有人可以帮我做插入吗?我有SELECT语句如下:
SELECT
CASE WHEN CHARINDEX('.',id) > 0
THEN SUBSTRING(id,1,2)
ELSE id end first,
CASE WHEN CHARINDEX('.',id)>0
THEN SUBSTRING(id,CHARINDEX('.',id)+1,len(id))
ELSE NULL END second
FROM fruit
[编辑:表格中还有其他栏目]
谢谢你看看!
答案 0 :(得分:1)
我认为你在这里寻找的是UPDATE而不是INSERT(而你试图设置这些数据的行已经存在...... INSERT会创建一个全新的行)。
UPDATE fruit
SET first = CASE WHEN CHARINDEX('.',id) > 0 THEN SUBSTRING(id,1,2)
ELSE id
END,
second = CASE WHEN CHARINDEX('.',id)>0 THEN SUBSTRING(id,CHARINDEX('.',id)+1,len(id))
ELSE NULL
END
答案 1 :(得分:1)
尝试,
create table t_split(id varchar(20),first varchar(20),second varchar(20))
insert into t_split values('AB.11','','');
insert into t_split values('AB.22','','');
insert into t_split values('AB.33','','');
insert into t_split values('AB.44','','');
insert into t_split values('AB.55','','');
insert into t_split values('ABt.557','','');
SELECT * FROM t_split
UPDATE t_split SET first=LEFT(ID,2),second =RIGHT(ID,2) WHERE ID IS NOT NULL;
OR
UPDATE t_split
SET first = LEFT(id,CHARINDEX('.',id)-1),second = RIGHT(id,LEN(id)-CHARINDEX('.',id))
OR
UPDATE t_split
SET first = LEFT(id,CHARINDEX('.',REVERSE(id))-1) ,second = RIGHT(ID,CHARINDEX('.',REVERSE(id))-1)