導入工具將每個列作爲varchar(max)放在幾個表中,我正在尋找將列轉換爲正確類型的最快方法。SQL轉換varchar列以浮動
這工作得很好,
ALTER TABLE dbo.myTable ALTER COLUMN myColumn INT
但失敗草草收場
ALTER TABLE dbo.myTable ALTER COLUMN myColumn FLOAT
出現錯誤: 消息8114,級別16,狀態5,第26行 錯誤轉換數據類型爲varchar浮動。
如何執行從VarChar(max)類型到Float的泛型列轉換?
我發現這些帖子了一些線索,但我一直沒能得到它的轉換:
Convert varchar to float IF ISNUMERIC
Error converting data type varchar
error converting varchar to float
select case isnumeric([myColumn]) when 1 then cast([myColumn] as float) else null end
from dbo.myTable
和
SELECT TOP (100) CAST(CASE WHEN IsNumeric([myColumn]) = 1 THEN [myColumn] ELSE NULL END AS float) AS [myColumn]
FROM dbo.myTable
WHERE ([myColumn] NOT LIKE '%[^0-9]%')
看來ISNUMERIC有一些問題嗎?
我寧願不要做這樣的有很多編輯欄,有沒有像ALTER TABLE一行轉換,在大多數或所有場景的作品?
或者有人建議將數據保存到臨時列中?如果有人可以將代碼發佈到tempColumn中,然後轉換原始代碼並刪除將成爲另一個有效解決方案的tempColumn。
您使用的是哪個版本的SQL Server? – gbn
SQL Server管理員Studii 2008 R2。 也ALTER TABLE語句似乎在大多數列的工作,那裏有隻有兩個表,其中浮法失敗。 – JPK