VARCHAR(255) 型の列を持つ SQL Server 2000 データベースがあります。すべてのデータは NULL、または精度が 2 ポイントまでの数値データです (例: '11.85')。次の T-SQL クエリを実行しようとしましたが、「データ型 varchar を数値に変換中にエラーが発生しました」というエラーが表示されました。
SELECT CAST([MyColumn] AS DECIMAL)
FROM [MyTable];
より具体的なキャストを試みましたが、これも失敗しました。
SELECT CAST([MyColumn] AS DECIMAL(6,2))
FROM [MyTable];
また、次のことを試して、数値以外のデータがあるかどうかを確認しましたが、返された値は NULL だけでした。
SELECT ISNUMERIC([MyColumn]), [MyColumn]
FROM [MyTable]
WHERE ISNUMERIC([MyColumn]) = 0;
FLOAT や MONEY など、他のデータ型に変換しようとしましたが、MONEY だけが成功しました。だから私は次のことを試しました:
SELECT CAST(CAST([MyColumn] AS MONEY) AS DECIMAL)
FROM [MyTable];
...うまくいきました。元のクエリが失敗した理由はありますか? 最初に MONEY に変換してから DECIMAL に変換すると問題はありますか?
ありがとう!