sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan opdeles en kolonne i to kolonner i SQL Server

prøv dette:

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

du kan bruge CASE-kommandoen til at kontrollere, om efternavnet er tilgængeligt.

SQL Fiddle

MS SQL Server 2008 Schema Setup :

Forespørgsel 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

Resultater :

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

OPDATERET:sqlfiddle tilføjet



  1. SQL -- Udfyldning af datoer, der ikke har resultater

  2. DB Design giver brugeren mulighed for at definere produkter, produktspecifikationer og lade sig selv indsætte ordrer

  3. Få forrige og næste række fra rækker valgt med (WHERE) betingelser

  4. TIMESTAMPADD() Eksempler – MySQL