首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server 2008中将列分隔为逗号,行作为倾斜时存储在表中

问在Server 2008中将列分隔为逗号,行作为倾斜时存储在表中
EN

Stack Overflow用户
提问于 2014-05-20 05:49:55
回答 1查看 262关注 0票数 1

当前端以逗号分隔列和倾斜符号分隔行的形式发送数据时,如何使用Server 2008将数据存储在表中。

我只从堆栈溢出中得到逗号分隔的值。

现在我需要这个来处理多个列。

例如

从前端:

代码语言:javascript
复制
ProductId, Color~
1, red~
1, blue~
1, green~
2, null~
3, purple~
3, green

在后端:这些数据应该以表格格式存储。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 10:32:24

代码语言:javascript
复制
USE [YourDB]
GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

/*Change name if needed*/
CREATE PROCEDURE uspInsertFromString 
@Str NVARCHAR(MAX)

WITH EXECUTE AS CALLER
AS
BEGIN
SET NOCOUNT ON;

BEGIN TRY
    BEGIN TRANSACTION;

    DECLARE @wrk_hr NVARCHAR(20)
    DECLARE @wrk_code NVARCHAR(20)
    DECLARE @active BIT

    DECLARE @IND INT
    DECLARE @StrRes NVARCHAR(MAX)
    DECLARE @StrRes2 NVARCHAR(MAX)

    SET @IND = CHARINDEX('~',@Str)

    WHILE(@IND > 0)
    BEGIN

        SET @StrRes = SUBSTRING(@Str, 1,  @IND-1)
        SET @StrRes2 = SUBSTRING(@StrRes, CHARINDEX(',', @Str)+1, LEN(@Str))

        SET @wrk_hr = CAST(SUBSTRING(@StrRes, 1, CHARINDEX(',', @Str)-1) AS VARCHAR(20))
        SET @wrk_code = CAST(SUBSTRING(@StrRes2, 1, CHARINDEX(',', @StrRes2)-1) AS VARCHAR(20))
        SET @active = CAST(SUBSTRING(@StrRes2, CHARINDEX(',', @StrRes2)+2, LEN(@Str)) AS BIT)

        INSERT INTO [dbo].[tbl_timesheet_entry] (wrk_hr, wrk_code, active ) VALUES (@wrk_hr, @wrk_code, @active) 

        SET @Str = SUBSTRING(@Str, @IND+1,  LEN(@Str))

        SET @IND = CHARINDEX('~',@Str)

    END

    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    -- Rollback any active or uncommittable transactions before
    -- inserting information in the ErrorLog
    IF @@TRANCOUNT > 0
    BEGIN
        ROLLBACK TRANSACTION;
    END

END CATCH;
END;

GO

用法:

代码语言:javascript
复制
EXEC uspInsertFromString '1, red, 1~1, blue, 0~1, green, 1~2, null, 0~3, purple, 1~3, green, 0~'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23751927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档