How to split one column into two columns in SQL Server

前端 未结 4 1898
我寻月下人不归
我寻月下人不归 2020-12-06 06:29

I have small question about SQL Server, please tell me how to solve this issue

Table: emp

   id    name
  ---------------
   1    abc_ra         


        
4条回答
  •  被撕碎了的回忆
    2020-12-06 06:45

    try this:

    select 
        case when CHARINDEX('_',name)>0 
             then SUBSTRING(name,1,CHARINDEX('_',name)-1) 
             else name end firstname, 
        CASE WHEN CHARINDEX('_',name)>0 
             THEN SUBSTRING(name,CHARINDEX('_',name)+1,len(name))  
             ELSE NULL END as lastname
    from emp
    

    you can use CASE command to control is last name available.

    SQL Fiddle

    MS SQL Server 2008 Schema Setup:

    Query 1:

    declare @t table (id int, name  varchar(50))
    
    insert into @t (id,name) values( 1    ,'abc_rao')
    insert into @t (id,name) values( 2    ,'nani')
    insert into @t (id,name) values( 3    ,'hari_babu')
    insert into @t (id,name) values( 4    ,'kalibabu')
    insert into @t (id,name) values( 5    ,'ab_tan')
    
    select 
        case when CHARINDEX('_',name)>0 
             then SUBSTRING(name,1,CHARINDEX('_',name)-1) 
             else name end firstname, 
        CASE WHEN CHARINDEX('_',name)>0 
             THEN SUBSTRING(name,CHARINDEX('_',name)+1,len(name))  
             ELSE NULL END as lastname
    from @t
    

    Results:

    | FIRSTNAME | LASTNAME |
    |-----------|----------|
    |       abc |      rao |
    |      nani |   (null) |
    |      hari |     babu |
    |  kalibabu |   (null) |
    |        ab |      tan |
    

    UPDATED: sqlfiddle added

提交回复
热议问题