【问题标题】:inserting data into table from string with splitting [closed]通过拆分将数据从字符串插入表[关闭]
【发布时间】:2016-03-31 20:37:04
【问题描述】:

我正在尝试插入 XML 字符串,例如 1,2,3,4,5,6,7,8,9,,1,1,1,1,2,23,4 进入表格

我想以这样的方式将数据插入下表,即每 3 个值后它应该进入下一行,是否可以这样做? 并在程序中生成xml字符串。

【问题讨论】:

  • 请将您的代码作为文本发布 - 不是图片 - 在这里!
  • 您是指 CSV(不是 XML)吗?
  • 嗨,我刚刚看到你很快就上去了……我的回答对你没有帮助吗?您需要进一步的帮助吗?
  • 感谢您的帮助,这很有帮助....

标签: sql asp.net xml


【解决方案1】:

您的问题很不清楚,但您可能正在寻找这样的东西:

DECLARE @Numbers VARCHAR(MAX)='1,2,3,4,5,6,7,8,9,,1,1,1,1,2,23,4';

WITH Splitted AS
(
    SELECT A.B.value('.','int') AS Number
          ,ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowInx
    FROM (SELECT CAST('<x>' + REPLACE(@Numbers,',','</x><x>') + '</x>' AS XML)) AS Casted(AsXml)
    CROSS APPLY Casted.AsXml.nodes('/x') AS A(B)
)
,Extended AS
(
    SELECT (RowInx -1 ) / 3 AS Rank3
          ,Number
          ,REPLACE('Field_' + CAST((RowInx % 3) AS VARCHAR(1)),'_0','_3') AS ColumnName
    FROM Splitted
)
SELECT p.*
FROM Extended
PIVOT
(
    MAX(Number) FOR ColumnName IN(Field_1,Field_2,Field_3)
) AS p

结果(顺便说一句:示例中的空值“...8,9,,1,1”被视为“0”):

Rank3   Field_1 Field_2 Field_3
0       1       2       3
1       4       5       6
2       7       8       9
3       0       1       1
4       1       1       2
5       23      4       NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多