问题描述
有一个表格,其中包含用逗号分隔的对象的不同 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',',' )