【发布时间】:2021-02-10 16:14:38
【问题描述】:
有一个表,其中包含用逗号分隔的对象的不同 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,charindex(',',ip.IP)+1,len(ip.IP)) as Col2
这导致第一个 IP 和第二个 IP 进入新列,但如果对象的 IP 多于它们在 Col2 中显示的 IP 数
【问题讨论】:
-
如果您不知道结果集中的列数,这将比您预期的要麻烦得多。
-
@GordonLinoff 如果对象可以包含一个或多个值,您会建议如何处理它?
-
@Austin4778 你用的是什么数据库管理系统?是否严格要求你有一个表,每个 ip 作为它自己的列 - 一个表,每个 ip 作为它自己的行,你可以在查询时随意处理它。
-
@Error_2646 SQL Server。新行也可以。只需用逗号分隔地址即可
-
@Austin4778 这应该对你有用,然后stackoverflow.com/questions/5493510/…
标签: sql sql-server cross-apply charindex