如果您使用的是sql server 2016或更高版本,则可以使用string\u split以获得更好的性能。请尝试以下操作:
;WITH cte AS(
SELECT [Name]
,value
,ROW_NUMBER() OVER(PARTITION BY [Name] ORDER BY (SELECT NULL)) as rn
FROM @t t
CROSS APPLY STRING_SPLIT(replace(replace([Name], '.', ';'), ':', ';'), ';') AS ss
)
SELECT
[1] AS Name1
,[2] AS Name2
,[3] AS Name3
,[4] AS Name4
,[5] AS Name5
,[6] AS Name6
FROM cte
PIVOT(
MAX(VALUE)
FOR RN IN([1],[2],[3],[4],[5],[6])
) as PVT
3条答案
按热度按时间lawou6xi1#
也许是这样的
退货
3b6akqbq2#
您还可以使用字符串方法执行直接查询,如
但后来还是变得很复杂。
如果可能的话,最好的选择是寻找一种不同的格式来存储数据。
nwwlzxa73#
如果您使用的是sql server 2016或更高版本,则可以使用string\u split以获得更好的性能。请尝试以下操作:
db<>在这里摆弄。
请在这里找到更多关于性能的信息。