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

Làm thế nào để chuyển đổi NVARCHAR được phân tách bằng dấu phẩy thành các bản ghi bảng trong SQL Server 2005?

Bản sao có thể có của phân tách các giá trị được phân tách bằng dấu phẩy và lưu trữ trong bảng trong máy chủ sql .

Vui lòng thử một mã chính xác từ Giá trị được phân cách bằng dấu phẩy thành Bảng :

CREATE FUNCTION [dbo].[ufn_CSVToTable] ( @StringInput VARCHAR(8000), @Delimiter nvarchar(1))
RETURNS @OutputTable TABLE ( [String] VARCHAR(10) )
AS
BEGIN

    DECLARE @String    VARCHAR(10)

    WHILE LEN(@StringInput) > 0
    BEGIN
        SET @String      = LEFT(@StringInput, 
                                ISNULL(NULLIF(CHARINDEX(@Delimiter, @StringInput) - 1, -1),
                                LEN(@StringInput)))
        SET @StringInput = SUBSTRING(@StringInput,
                                     ISNULL(NULLIF(CHARINDEX(@Delimiter, @StringInput), 0),
                                     LEN(@StringInput)) + 1, LEN(@StringInput))

        INSERT INTO @OutputTable ( [String] )
        VALUES ( @String )
    END

    RETURN
END
GO

Kiểm tra yêu cầu theo cách khác bằng cách sử dụng XML:

DECLARE @param NVARCHAR(MAX)
SET @param = '1:0,2:1,3:1,4:0'

SELECT 
     Split.a.value('.', 'VARCHAR(100)') AS CVS  
FROM  
(
    SELECT CAST ('<M>' + REPLACE(@param, ',', '</M><M>') + '</M>' AS XML) AS CVS 
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)


  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 thế nào để tạo một truy vấn trong SQL SERVER 2005 cho kết quả như Ma trận?

  2. Công tắc bảng thay đổi hoạt động như thế nào trên máy chủ sql?

  3. Làm cách nào để tôi có được ngày tối đa (mỗi khóa chính) và nhận được sự khác biệt của nó với ngày từ bảng khác?

  4. SQL Server 2008 - Tìm kiếm / Sắp xếp Nâng cao

  5. datetime2 so với smalldatetime trong SQL Server:Sự khác biệt là gì?