在SQL Server表中将1列分隔为2列

时间:2014-07-31 22:38:06

标签: sql sql-server merge

我试图在我拥有的数据库表中将1列分成2列。我在这里发现了一些问题,这些问题可以帮助您选择数据,但不会自行插入数据。

Table name = fruit

从上图中可以清楚地看到,我试图将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

[编辑:表格中还有其他栏目]

谢谢你看看!

2 个答案:

答案 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)
相关问题