是varchar
類型,並且我需要改變爲decimal (18,2)
類型的列,因爲在數據庫中的列的值是十進制和我需要更改所有欄目,請幫助我。轉換VARCHAR到int
回答
不工作:將數據類型varchar轉換爲數字時出錯。 – 2012-03-03 18:20:27
@ManojWadhwani:那麼在這種情況下,你的'varchar'列中必須有一些數據不是**真的是'int'。過濾出來,刪除或更正這些行 - 然後再試一次 – 2012-03-03 18:22:35
是的,我編輯了我的答案,以顯示如何查找有效投射的值。 ISNUMERIC(COLUMN)= 1告訴你數值,ISNUMERIC(COLUMN)<> 1告訴你無效的值。正如@marc_s所說,你將需要刪除或更正非數字行,否則什麼都不會起作用。 – 2012-03-03 18:37:14
嘗試轉換
http://msdn.microsoft.com/en-us/library/ms187928.aspx
這樣的事情
alter table sqlTable add newColumn
UPdate sqlTable
Set newColumn = convert(decimal(18,2),oldcolumn)
alter table sqlTable drop oldcolumn
同樣的錯誤:將數據類型varchar轉換爲數字時出錯。 – 2012-03-03 18:26:53
要遷移數據 - 如果這確實是你的要求 - 你可能最好關閉添加一個新列的表,做一個更新成列,檢查數據,然後下降舊的專欄。如果你想保留原始的列名,你可以重複這個過程。
所以
1. alter table mytable add myNewColumn int
(或十進制(18,2),這取決於你的要求)
2.更新mytable的組myNewColumn = cast(myOldColumn as int) or convert(int, myOldColumn)
- 見http://msdn.microsoft.com/en-us/library/ms187928.aspx
3.目視檢查數據
4. alter table mytable drop myOldColumn
嘗試但得到相同的錯誤:alter table TestData alter column [NET_ACCOUNTED] [decimal](18,2)NULL – 2012-03-03 18:30:01
我不是建議你改變一列 - 而是你添加一個新的所需數據類型的列,並獲得數據進入它。根據其他反饋 - 您需要檢查使用ISNUMERIC將數據識別爲數字。如果您遇到特定行的問題,哪些數據無法轉換? – kaj 2012-03-03 20:18:26
- 1. 將Varchar 3轉換爲int
- 2. PostgreSQL - 將varchar轉換爲int?
- 3. SQL Server轉換失敗varchar到int
- 4. 誤差變換VARCHAR轉換成int
- 5. 將列var上的varchar轉換爲int列轉換爲int
- 6. 轉換失敗而轉換爲varchar到int背後
- 7. int和varchar之間的隱式轉換
- 8. 轉換varchar int時間格式SQL
- 9. 將varchar值的轉換溢出int列
- 10. 如何將Int轉換爲Varchar
- 11. SQL - 將varchar值轉換爲Int時轉換失敗
- 12. 將varchar值轉換爲數據類型時轉換失敗int
- 13. 將varchar值「 - 」轉換爲日期類型時轉換失敗INT
- 14. 將varchar值轉換爲int時出現轉換失敗
- 15. 錯誤轉換轉換爲varchar值爲int
- 16. 將varchar值「」....「'轉換爲數據類型int時轉換失敗
- 17. 將varchar值轉換爲int時轉換失敗
- 18. 當將varchar值「.03」轉換爲數據類型int時,轉換失敗int
- 19. 將varchar值'xxx'轉換爲數據類型int轉換失敗int
- 20. 轉換轉換VARCHAR數據類型爲int,但沒有被定義爲int
- 21. 將varchar值645.00轉換爲數據類型int時出現轉換失敗int
- 22. 將varchar值'7:00'轉換爲數據類型int轉換失敗int
- 23. 當將varchar值'Blue color'轉換爲數據類型int時,轉換失敗int
- 24. 將varchar值「0%」轉換爲數據類型int時發生轉換失敗int
- 25. 轉換出錯轉換VARCHAR到SMALLINT
- 26. 誤差變換爲varchar到int
- 27. c#sql無法將varchar轉換爲int(找到工作)
- 28. 將varchar轉換爲int,而我插入到一個sql表
- 29. 錯誤轉換數據類型爲varchar到int
- 30. Sybase錯誤隱式轉換「VARCHAR」到「INT」不允許
也許你應該調查哪些行不與小數匹配,並將其包含在你的問題中。看起來人們正在用正確的代碼解決你的問題,但你還沒有給出解決你真正問題所需的所有參數。 – 2012-03-03 20:40:51
你顯然在你的列中有數據是**不是**數字 - 使用'SELECT(cols)FROM dbo.YourTable WHERE ISNUMERIC(yourcolumn)= 0'找到它;清理那些數據,然後**然後再試一次... – 2012-03-03 20:48:31