Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tách một cột thành hai cột trong SQL Server

hãy thử cái này:

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

bạn có thể sử dụng lệnh CASE để kiểm soát họ có sẵn không.

SQL Fiddle

Thiết lập lược đồ MS SQL Server 2008 :

Truy vấn 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

Kết quả :

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

CẬP NHẬT:đã thêm 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. Xóa các bản ghi trùng lặp chỉ bằng một truy vấn

  2. Cách chỉ định văn hóa bất biến khi sử dụng FORMAT () trong SQL Server

  3. Làm cách nào để liệt kê tất cả các bảng trong tất cả các cơ sở dữ liệu trong SQL Server trong một tập hợp kết quả?

  4. Tách các giá trị được phân tách bằng dấu phẩy trong các cột thành nhiều hàng trong Sql Server

  5. Cách tăng tốc máy chủ SQL của bạn bằng cách sử dụng giám sát hiệu suất cơ sở dữ liệu