获取 SQL 服务器中单独行中每个逗号之间的值
Get Values between Each Comma in Seperate Row in SQL Server
我需要从单个字符串 table 在数据库中插入多行。
这是我的字符串,它将是逗号分隔值
当前字符串:
batch 1 45665 987655,1228857 76554738,12390 8885858,301297 38998798
我想要的是第 1 批应该被忽略或删除,其余部分应该作为单独的行添加到 SQL 服务器数据库中,用于每个逗号之后
Table姓名dbo.MSISDNData
Data
------------------
45665 987655
1228857 76554738
12390 8885858
301297 38998798
当我查询 table 时,它应该 return 这样的结果
查询:
Select data
from dbo.MSISDNData
结果
Data
---------------------
45665 987655
1228857 76554738
12390 8885858
301297 38998798
试试这个:
DECLARE @Data NVARCHAR(MAX) = N'batch 1 45665 987655,1228857 76554738,12390 8885858,301297 38998798'
DECLARE @DataXML XML;
SET @Data = '<a>' + REPLACE(REPLACE(@Data, 'batch 1 ', ''), ',', '</a><a>') + '</a>';
SET @DataXML = @Data;
SELECT LTRIM(RTRIM(T.c.value('.', 'VARCHAR(MAX)'))) AS [Data]
FROM @DataXML.nodes('./a') T(c);
它演示了如何拆分数据。您可能还需要对其进行清理 - 删除 batch 1
、执行修剪等
我需要从单个字符串 table 在数据库中插入多行。
这是我的字符串,它将是逗号分隔值
当前字符串:
batch 1 45665 987655,1228857 76554738,12390 8885858,301297 38998798
我想要的是第 1 批应该被忽略或删除,其余部分应该作为单独的行添加到 SQL 服务器数据库中,用于每个逗号之后
Table姓名dbo.MSISDNData
Data
------------------
45665 987655
1228857 76554738
12390 8885858
301297 38998798
当我查询 table 时,它应该 return 这样的结果
查询:
Select data
from dbo.MSISDNData
结果
Data
---------------------
45665 987655
1228857 76554738
12390 8885858
301297 38998798
试试这个:
DECLARE @Data NVARCHAR(MAX) = N'batch 1 45665 987655,1228857 76554738,12390 8885858,301297 38998798'
DECLARE @DataXML XML;
SET @Data = '<a>' + REPLACE(REPLACE(@Data, 'batch 1 ', ''), ',', '</a><a>') + '</a>';
SET @DataXML = @Data;
SELECT LTRIM(RTRIM(T.c.value('.', 'VARCHAR(MAX)'))) AS [Data]
FROM @DataXML.nodes('./a') T(c);
它演示了如何拆分数据。您可能还需要对其进行清理 - 删除 batch 1
、执行修剪等