你好以下是问题;如果有办法解决它,请告诉我......
问题:需要将表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
我收到以下错误:
从字符串转换日期和/或时间时转换失败。
提前致谢。
答案 0 :(得分:3)
您的选择中有2个紧密的parens,并且您在插入时缺少第三列名称。
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 :(得分:1)
正如我现在缩进它,你在第二部分用patindex语句错过了括号(因为你可能添加了len(
:
1 2 3 4 432...
patindex('% %', Len(CAST(Col2 AS varchar(30)))
答案 2 :(得分:1)
你可以尝试这个,让我们知道它是否有效
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 :(得分:0)
以下是答案,
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
谢谢大家。 :)