我想要通过将其中有一个冒号的一列分成两个独立的列来输出结果。一个条件是如果没有冒号,则该值应该在第二个新列中
SingleColumn
------------
TYPE: HIGH POWER/MAGNETIC
LAMPTYPE: FLUORESCENT
BALLAST STYLE
NewColumn1 NewColumn2
---------- ----------
Type HIGH POWER/MAGNETIC
LAMPTYPE FLUORESCENT
BALLAST STYLE
答案 0 :(得分:1)
也许使用子字符串函数来提取想要的部分:
select
iif(
charindex(':', SingleColumn) > 0,
left(SingleColumn, charindex(':', SingleColumn) - 1),
null
) as NewColumn1,
iif(
charindex(':', SingleColumn) > 0,
right(SingleColumn, len(SingleColumn) - charindex(':', SingleColumn)),
SingleColumn
) as NewColumn2
from my_table
如果字符串不包含定界符,则第二列将获取整个值。
答案 1 :(得分:0)
如果您使用的是SQL Server 2016,则可以使用新的string_split函数:
SELECT colid,prod1,prod2
FROM my_table
CROSS APPLY STRING_SPLIT(singlecolumn, ':');
其中colid是常规列,prod1和prod2将包含两个部分。如果有一个(否:),则prod1将包含该值。