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

Cách tách một chuỗi trong sql server 2008 bằng thủ tục được lưu trữ và chèn dữ liệu vào bảng

Nói chung, tôi khuyên bạn nên viết một hàm CLR chia chuỗi bằng hàm regex hoặc hàm có giá trị bảng SQL, nhưng trong trường hợp của bạn, bạn có thể thử một cái gì đó đơn giản như chuyển đổi chuỗi của bạn thành xml và phân tích cú pháp nó:

declare @str nvarchar(max) = 'date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8'
declare @data xml

select @str = replace(@str, '=', '="')
select @str = replace(@str, '|', '" ')
select @str = replace(@str, '^', '"/><row ')
select @str = '<row ' + @str + '"/>'

select @data = cast(@str as xml)

select
    t.c.value('@date', 'nvarchar(max)') as [date],
    t.c.value('@age', 'nvarchar(max)') as [age]
from @data.nodes('row') as t(c)

sql fiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm phẳng XML phân cấp trong SQL bằng phương thức node ()

  2. NOLOCK so với Mức cách ly giao dịch

  3. Lấy mẫu ngẫu nhiên từ một tập dữ liệu lớn

  4. Làm cách nào để thay đổi cột được tính toán này trong SQL Server 2008?

  5. Làm cách nào để tạo ràng buộc kiểm tra nhiều bảng?