Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在MSSql中,每列而不是每行插入已解析的字符串_Sql Server_Parsing_Insert - Fatal编程技术网

Sql server 在MSSql中,每列而不是每行插入已解析的字符串

Sql server 在MSSql中,每列而不是每行插入已解析的字符串,sql-server,parsing,insert,Sql Server,Parsing,Insert,我之前问过一个关于解析字符串的问题,其中字符串是逗号和分号分隔的。我了解流程,并根据自己的需要对其进行了一点出色的编辑。现在我的问题是,返回的结果是在单个列中,而不是每列中解析数据的一部分 351856040520298 241111 1G 141007024755 A 1437.2453N 12100.2887E 3.10 206 0.8 21010000 2G 141007024755 10 43.6 14.08 00.18 273295019.6 以上就是结果。它们都位于名为“方法2”的

我之前问过一个关于解析字符串的问题,其中字符串是逗号和分号分隔的。我了解流程,并根据自己的需要对其进行了一点出色的编辑。现在我的问题是,返回的结果是在单个列中,而不是每列中解析数据的一部分

351856040520298
241111
1G
141007024755
A
1437.2453N
12100.2887E
3.10
206
0.8
21010000
2G
141007024755
10
43.6
14.08
00.18
273295019.6
以上就是结果。它们都位于名为“方法2”的1列中

现在我想展示的是一个数据列

351856040520298 |241111 |1G | 141007024755 |A |1437.2453N |12100.2887E |3.10 |206 |0.8 |21010000 |2G |141007024755 |10 |43.6 |14.08 |00.18 |273295019.6   
像上面这样的东西正是我想要的

这是密码

我使用动态查询和游标来获得预期的结果。试试这个,告诉我它是否符合你的要求

将“从TableName中选择Column1”查询更改为包含多行的单个列的选择查询

DECLARE @Current VARCHAR(100)
DECLARE @QueryString NVARCHAR(MAX)

DECLARE Cursor1 CURSOR FOR
   SELECT Column1 FROM YourTableName

    SET @QueryString = 'SELECT '

    OPEN Cursor1
    FETCH NEXT FROM Cursor1 INTO @Current

    WHILE @@FETCH_STATUS = 0
    BEGIN  
        FETCH NEXT FROM Cursor1 INTO @Current
        SET @QueryString = @QueryString + ISNULL(@Current, 'NULL') + ', '
    END

    CLOSE Cursor1
    DEALLOCATE Cursor1

    SELECT @QueryString = SUBSTRING(@QueryString, 0, LEN(@QueryString) - 1)
    EXEC SP_EXECUTESQL @QueryString

要生成输出表,您必须声明输出的结构,但看起来您不知道输入字符串中可以包含多少列,所以您不能这样做…这是一个存储过程吗?还是功能?我将如何设置它?
DECLARE @Current VARCHAR(100)
DECLARE @QueryString NVARCHAR(MAX)

DECLARE Cursor1 CURSOR FOR
   SELECT Column1 FROM YourTableName

    SET @QueryString = 'SELECT '

    OPEN Cursor1
    FETCH NEXT FROM Cursor1 INTO @Current

    WHILE @@FETCH_STATUS = 0
    BEGIN  
        FETCH NEXT FROM Cursor1 INTO @Current
        SET @QueryString = @QueryString + ISNULL(@Current, 'NULL') + ', '
    END

    CLOSE Cursor1
    DEALLOCATE Cursor1

    SELECT @QueryString = SUBSTRING(@QueryString, 0, LEN(@QueryString) - 1)
    EXEC SP_EXECUTESQL @QueryString