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

tách giá trị phân tách bằng dấu phẩy từ bảng trong máy chủ sql

Bạn có thể trích xuất các tên bằng CTE đệ quy và một số phân tích cú pháp chuỗi. Phần còn lại chỉ là tổng hợp:

with cte as (
      select (case when names like '%,%'
                   then left(names, charindex(',', names) - 1)
                   else names
              end) as name,
             (case when names like '%,%'
                   then substring(names, charindex(',', names) + 1, len(names))
              end) as names
      from names
      union all
      select (case when names like '%,%'
                   then left(names, charindex(',', names) - 1)
                   else names
              end) as name,
             (case when names like '%,%'
                   then substring(names, charindex(',', names) + 1, len(names))
              end)
      from cte
      where names is not null
     )
select name, count(*)
from cte
group by name;

Như bạn có thể đã hình dung, lưu trữ danh sách được phân tách bằng dấu phẩy trong SQL Server là một ý tưởng tồi. Bạn nên có một bảng liên kết / nối với một hàng cho mỗi tên (và các cột khác mô tả danh sách trong đó).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn dữ liệu Excel hoặc CSV vào Bảng bằng cách sử dụng Giao diện người dùng đồ họa trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 102

  2. phát triển ứng dụng SQL 2005 bằng máy chủ SQL 2008

  3. Cách tạo truy vấn SQL động bên trong CURSOR

  4. Cách tạo trường tăng tự động trong truy vấn chọn

  5. Kiểu dữ liệu 'MONEY' của SQL Server là dấu phẩy động thập phân hay dấu phẩy động nhị phân?