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