首页 > 解决方案 > 通过分隔冒号将单列拆分为两列

问题描述

我希望通过将一列之间有冒号的列拆分为两个单独的列来输出。一个条件是,如果没有冒号,则该值应该在第二个新列中

SingleColumn
------------ 
TYPE: HIGH POWER/MAGNETIC
LAMPTYPE: FLUORESCENT
BALLAST STYLE

NewColumn1    NewColumn2
----------    ----------
Type          HIGH POWER/MAGNETIC
LAMPTYPE      FLUORESCENT
              BALLAST STYLE

标签: sql-server

解决方案


也许使用子字符串函数来提取你想要的部分:

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

如果字符串不包含分隔符,则第二列获取整个值。


推荐阅读