Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara membagi satu kolom menjadi dua kolom di SQL Server

coba ini:

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

Anda dapat menggunakan perintah CASE untuk mengontrol apakah nama belakang tersedia.

SQL Fiddle

Pengaturan Skema MS SQL Server 2008 :

Kueri 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

Hasil :

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

DIPERBARUI:sqlfiddle ditambahkan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan login dan sambungkan ke SQL dengan SQL Server Authentication

  2. Pemicu pembaruan SQL hanya ketika kolom diubah

  3. Forum Kinerja SQL Server Terbaik untuk Bantuan pada Pertanyaan Terberat

  4. Panggilan Prosedur Jarak Jauh gagal dengan sql server 2008 R2

  5. Gunakan NEWID() untuk Membuat Nilai Unik di SQL Server