Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中将一列拆分为两列_Sql_Sql Server_Date_Casting_Split - Fatal编程技术网

如何在SQL中将一列拆分为两列

如何在SQL中将一列拆分为两列,sql,sql-server,date,casting,split,Sql,Sql Server,Date,Casting,Split,我有一个SQL查询,它从表中提取列,这些列必须按此顺序排列 项目Id, 帕尔姆斯, 移动列表, MsgId。我在查询中还有一些必须保留的需求,比如UserCode=automation,并且日期设置为当前日期的前一天 一行的Parms输出示例如下 CURRENT OUTPUT Parms: V51370,Move List,M-000001 -- 我要做的是将这个Parms列拆分为两个单独的列,分别位于Item Id和Move list列之间。第一列应称为Media,它

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

项目Id, 帕尔姆斯, 移动列表, MsgId。我在查询中还有一些必须保留的需求,比如UserCode=automation,并且日期设置为当前日期的前一天

一行的Parms输出示例如下

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

我要做的是将这个Parms列拆分为两个单独的列,分别位于Item Id和Move list列之间。第一列应称为Media,它从Parms列中提取前六个字符:v51370。第二列是注释,如果MsgId为1,则注释应为:已从中删除

有人能对我可能测试的问题提出建议吗?我不确定在哪里可以安装Parms列拆分。我们将不胜感激

请注意:我使用的是SQLServerManagementStudio 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

要将前6个字符与parms分开,请使用

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

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

您能告诉我们您到目前为止尝试了什么吗?还有可能是问题表格中的一些样本数据?@DevN00B我已经用表格中的样本数据更新了问题。我希望这有帮助。Parms列包含3个逗号分隔的值,您不想将此拆分为3吗?您可以使用类似SUBSTRING(Parms,1,6)的内容提取前6个字符Media@SelectDistinct是的,分成三份也可以。
SELECT SUBSTRING(Parms,1,6) AS Media 
FROM YOUR TABLE;