我有一个字符串值,其数值由逗号分隔,然后由管道分隔.我想把它们分成一个有两列的表.我可以将字符串拆分一个分隔符,但遗憾的是找不到拆分方法.请帮忙.
DECLARE @list NVARCHAR(MAX) = '1,101|2,202|3,303';
Run Code Online (Sandbox Code Playgroud)
结果应如下所示.
1 101
2 202
3 303
Run Code Online (Sandbox Code Playgroud)
提前致谢.
如果您使用的是 SQL Server 2016 或 Azure,则可以访问新的SPLIT_STRING函数。如果不是,我建议使用 Jeff Moden 的 DelimitedSplit8K 函数,该函数被广泛认为是最快、最有效的基于 SQL 的字符串拆分器...
DECLARE @list NVARCHAR(MAX) = '1,101|2,202|3,303';
SELECT
Col1 = LEFT(dsk.Item, sl.SplitLocation - 1),
Col2 = SUBSTRING(dsk.Item, sl.SplitLocation + 1, LEN(dsk.Item))
FROM
dbo.DelimitedSplit8K(@list, '|') dsk -- code for DelimitedSplit8K can be found here... http://www.sqlservercentral.com/articles/Tally+Table/72993/
CROSS APPLY ( VALUES (ISNULL(NULLIF(CHARINDEX(',', dsk.Item, 1), 0), 1)) ) sl (SplitLocation);
Run Code Online (Sandbox Code Playgroud)