sql >> Databáze >  >> RDS >> Sqlserver

Jak rozdělit jeden sloupec na dva sloupce v SQL Server

zkuste toto:

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

můžete použít příkaz CASE k ovládání dostupného příjmení.

SQL Fiddle

Nastavení schématu MS SQL Server 2008 :

Dotaz 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

Výsledky :

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

AKTUALIZOVÁNO:přidán sqlfiddle



  1. Jak aktualizovat všechna data v tabulce

  2. Chybný počet nebo typy argumentů při volání procedury

  3. Vyhledávání MySQL s objednanými zástupnými znaky a extrahování jejich hodnot

  4. Vytváří cizí klíč automaticky index?