sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man delar upp en kolumn i två kolumner i SQL Server

prova detta:

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 använda CASE-kommandot för att kontrollera om efternamnet är tillgängligt.

SQL Fiddle

MS SQL Server 2008 Schema Setup :

Fråga 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

Resultat :

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

UPPDATERAD:sqlfiddle har lagts till



  1. Få bara date från datetime sql utan att konvertera till varchar så att jag kan sortera det i excel

  2. Undvikande enstaka offert i PLSQL

  3. 12c Flytta datafiler online

  4. Hur indikerar man att en kolumn inte är nullbar när man skapar en materialiserad vy?