文章出處

一個很基礎的插入語句:

insert into table1
select col1,convert(datetime,col2),convert(datetime,col3),col4,col5 from table2

其中table1表中col2,col3是datetime類型,其他都是varchar類型,table2全部是varchar類型。

  table2表中全部是varchar類型,col 1 4 5都有可能是空值。

在執行時報出如下錯誤:

消息 242,級別 16,狀態 3,第 1 行
從 varchar 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值。
語句已終止。

由于datetime類型的只涉及到了col 2 3兩列,因此檢查了好長時間這兩列的數據是否規范,但是最后發現并不是不規范數據的問題。

插入語句寫成:

insert into table1(col1,col2,col3,col4,col5) 
select col1,convert(datetime,col2),convert(datetime,col3),col4,col5 from table2

則不會報錯,應該是未能寫明列名,導致匹配時其他列的值匹配到datetime列導致,因此sqlserver insert into ... select ...時寫明列名是很有必要的,僅記與此。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()