【问题标题】:Split and Copy Table拆分和复制表
【发布时间】:2013-01-29 02:13:57
【问题描述】:

你好,以下是问题;让我知道是否有任何方法可以解决它...

问题:需要将表 T1 复制到另一个表 T2。 但是复制时T1.Col2应该拆分为T2.Col2和T3.Col3。

这是我使用的查询;

Insert INTO T2 (Col1,Col2)
SELECT Col1, 
    substring(
        CAST(Col2 AS varchar(30)), 
        1, 
        patindex('% %', CAST(Col2 AS varchar(30)))-1
    ), 
    substring(
        CAST(Col2 AS varchar(30)), 
        patindex('% %', Len(CAST(Col2 AS varchar(30))))+1,
        Len(Col2)
    )

from T1

我收到以下错误:

从字符串转换日期和/或时间时转换失败。

提前致谢。

【问题讨论】:

  • 我建议您尝试一次构建这个字段。让它为一个领域工作。然后添加另一个字段。您的问题可能是标点符号 - 括号太多或不够。一步步开发代码,你会更容易发现问题。
  • 已经应用了一堆缩进,我认为这样更容易发现错误!
  • @DOK :谢谢,更正了标点符号,得到了一个新错误。参考上面。

标签: sql-server select insert copy


【解决方案1】:

您的选择缺少 2 个关闭括号,并且您在插入时缺少第三列名称。

Insert INTO T2 (Col1,Col2,Col3)
SELECT Col1, 
    substring(CAST(Col2 AS varchar(30)), 1, patindex('% %', CAST(Col2 AS varchar(30)))-1), 
    substring(CAST(Col2 AS varchar(30)), patindex('% %', Len(CAST(Col2 AS varchar(30))))
from T1

【讨论】:

  • +1 在缺少的列上的好位置(完全错过了括号的不适)
【解决方案2】:

你可以试试这个,让我们知道它是否有效

Insert INTO T2 (Col1,Col2, Col3)
SELECT Col1, 
substring(CAST(Col2 AS varchar(30)), 1, patindex('% %', CAST(Col2 AS varchar(30)))-1), 
substring(CAST(Col2 AS varchar(30)), patindex('% %', Len(CAST(Col2 AS varchar(30)))))
from T1

您似乎缺少其中一列

【讨论】:

    【解决方案3】:

    正如我现在缩进的那样,您在第二部分中缺少带有 patindex 语句的括号(因为您可能添加了 len(

            1          2    3               4  432...
    patindex('% %', Len(CAST(Col2 AS varchar(30)))
    

    【讨论】:

      【解决方案4】:

      这就是答案,

      INSERT INTO T2 
                 (T2COL1
                 ,T2COL2 
                 ,T2COL3) 
      SELECT T1COL1 
            ,Convert(date, CONVERT(nvarchar(20), T1COL2, 101)) 
            ,convert(time(7), CONVERT(nvarchar(20), T1COL2, 108)) 
      FROM T1
      

      我们可以在处理日期和时间时使用转换代码来简化工作。我参考了以下链接;

      http://www.blackwasp.co.uk/SQLDateTimeFormats.aspx

      谢谢大家。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-28
        • 2014-10-09
        • 2016-08-29
        • 1970-01-01
        • 1970-01-01
        • 2019-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多