SQL SERVER - 将逗号分隔的数字拆分为两列

时间:2017-10-24 18:12:03

标签: sql sql-server

我有一个包含整数的 A列。在某些情况下,该列将包含以逗号分隔的两个整数列表,表示为字符串。

示例:1,2。在这种情况下,我需要做两件事。

  1. 确定数据是否包含逗号。如果没有将值填入 B列
  2. 如果确实有逗号,则需要将第一个数字填入 C列,将第二个数字填入 B列
  3. 如果有助于更好地理解问题,我们有一个数据供应商已更新其数据中的ID字段。他们维护遗留ID的想法是简单地列出它,然后是用逗号分隔的新ID。为什么他们选择这样做而不是创建新列我不知道。我相信他们有他们的理由。

2 个答案:

答案 0 :(得分:3)

您可以这样做:

select cast( (case when a like '%,%' then substring(a, charindex(',', a) + 1, len(a)) else a end) as int) b,
       cast( (case when a like '%,%' then left(a, charindex(',', a) - 1) end) as int) c

当然,如果您希望值保持为字符串,则不需要cast()

答案 1 :(得分:0)

您可以使用RIGHT,LEFT和Charindex的组合。

revealToggle

我使用过Shashra的问题,由Martin Smith回答 - 一个有点相关但不同的问题here