【问题标题】:Separate 1 column into 2 columns in SQL Server table在 SQL Server 表中将 1 列分成 2 列
【发布时间】:2014-07-31 22:38:05
【问题描述】:

我正在尝试将我拥有的数据库表中的 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

[编辑:表中还有其他列]

感谢观看!

【问题讨论】:

    标签: sql sql-server merge


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      试试,

      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;
      

      UPDATE t_split
      SET first = LEFT(id,CHARINDEX('.',id)-1),second = RIGHT(id,LEN(id)-CHARINDEX('.',id))
      

      UPDATE t_split
      SET first = LEFT(id,CHARINDEX('.',REVERSE(id))-1) ,second = RIGHT(ID,CHARINDEX('.',REVERSE(id))-1)
      

      【讨论】:

      • 比你还努力。 @DarkSolace 给了我上面的货物,但我很感激你花时间回答!谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2018-06-16
      相关资源
      最近更新 更多