Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak podzielić jedną kolumnę na dwie kolumny w SQL Server

spróbuj tego:

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

możesz użyć polecenia CASE, aby sprawdzić, czy dostępne jest nazwisko.

Skrzypce SQL

Konfiguracja schematu MS SQL Server 2008 :

Zapytanie 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

Wyniki :

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

AKTUALIZACJA:dodano sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę połączyć się z SQL Server przy użyciu zintegrowanych zabezpieczeń ze sterownikiem JDBC?

  2. Dlaczego NULL =NULL daje wartość false w serwerze SQL?

  3. Błąd serwera SQL 110:W instrukcji INSERT jest mniej kolumn niż wartości określone w klauzuli VALUES.

  4. Wydajność SQL jest niska podczas uzyskiwania dostępu do najnowszych rekordów

  5. Utwórz tabelę ról i członkostwa ASP.NET w mojej aplikacji