【问题标题】:How to Split a Column into 2 Columns in SQL如何在 SQL 中将一列拆分为 2 列
【发布时间】:2013-06-28 14:12:25
【问题描述】:

我有一个 SQL 查询,它从必须按此顺序的表中提取列

物品编号, 帕尔姆斯, 移动列表, 消息 ID。我在查询中还有一些要求必须保留在那里,例如 UserCode = automation 并且日期设置为当天前一天。

一行的 Parms 输出示例是这样的

    CURRENT OUTPUT
    Parms:
    V51370,Move List,M-000001

--

    REQUIRED OUTPUT
    Media: v51370
    Comments: Was Removed From
    Move List: M-000001

我想要做的是将此 Parms 列拆分为两个单独的列,它们位于 Item Id 和 Move list Column 之间。第一列应称为 Media,它从 Parms Column:v51370 中提取前六个字符。第二列是 cmets,如果 MsgId 为 1,则注释应为:Was Removed from.

任何人都可以对我可以测试的可能查询提出任何建议吗?我不确定在哪里放置 Parms 列拆分。将不胜感激。

请注意:我使用的是 SQL Server Management Studio 2008,表名是 JnlList。

     1 SAMPLE ROW (SELECT * FROM JNLLIST):
     ItemId: 2
     Date: 20122102.124652563
     Object: S-000001
     MsgID: 1
     Parms: V86143,Scratch List,S-000001
     Delimiter: -
     UserCode: Automation
     ActionId: 5
     List Type: S

【问题讨论】:

  • 你能告诉我们你到目前为止尝试了什么吗?或许还有相关表格中的一些样本数据?
  • @DevN00B 我已经用表格中的示例数据更新了问题。我希望这会有所帮助。
  • Parms 列包含 3 个逗号分隔值,因此您不希望将其拆分为 3 个吗?
  • 您可以使用 SUBSTRING(Parms, 1, 6) AS Media 之类的方法提取前 6 个字符
  • @SelectDistinct 是的,拆分成 3 也可以。

标签: sql sql-server date casting split


【解决方案1】:

将前 6 个字符与参数分开使用

SELECT SUBSTRING(Parms,1,6) AS Media 
FROM YOUR TABLE;

然后您可以使用具有相同语法的子查询从 Parms 列中选择其余字符并将它们放入单独的列中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多