SQL 将值动态拆分为新列

问题描述

一个表格,其中包含用逗号分隔的对象的不同 IP 值。寻找将它们动态拆分为新列的方法。例如,

10.12.11.20,192.168.1.3,192.168.1.4
192.168.1.50,

根据表中返回的结果,想将它们拆分为受关注的列(IPAddress0、IPAddress1 等)将这些值拆分为新行会更容易/更好吗?

更新:

尝试了以下内容

 substring(ip,1,charindex(',',ip.IP)-1) as Col1,substring(ip,ip.IP)+1,len(ip.IP)) as Col2

这导致第 1 个 IP 和第 2 个 IP 进入新列,但如果对象的 IP 多于它们显示在 Col2 中的 IP

解决方法

如果您有 SQL 2016 或更高版本并且行也适合您,您可以使用 STRING_SPLIT,如下所示。

SELECT VALUE FROM STRING_SPLIT ( '10.12.11.20,192.168.1.3,192.168.1.4',',' )