【发布时间】:2019-01-17 23:39:37
【问题描述】:
我有以下一组 SQL 语句。目的是找到每件商品的售价。
SELECT cost AS 'Price', disc AS 'Discount', (cost-disc) AS 'Selling Price'
FROM SALE
问题是cost, scost, disc 列属于Varchar 数据类型。所以我尝试投列,但没有奏效。不,我尝试如下更改列数据类型:
UPDATE SALE
SET cost = '0.0'
WHERE cost IS NULL OR ISNUMERIC(cost) = 0;
ALTER TABLE SALE
ALTER COLUMN cost DECIMAL(12,0);
UPDATE SALE
SET scost = '0.0'
WHERE scost IS NULL OR ISNUMERIC(scost) = 0;
ALTER TABLE SALE
ALTER COLUMN scost DECIMAL(12,0);
UPDATE SALE
SET disc = '0.0'
WHERE disc IS NULL OR ISNUMERIC(disc) = 0;
ALTER TABLE SALE
ALTER COLUMN disc DECIMAL(12,0);
我在 SQL Server Management Studio 中遇到的错误:
消息 245,第 16 级,状态 1,第 3 行
将 varchar 值“0.0”转换为数据类型 int 时转换失败。
如何解决这个问题?
【问题讨论】:
-
检查 varchar 列中的逗号。 ISNUMERIC 不会找到它们,因为它会检查所有数字类型(包括钱)。
-
错误信息提示 cost 是 int,而不是 varchar。尝试不带
UPDATE的 ALTER。
标签: sql sql-server sql-server-2008 sql-server-2005