2011-12-02 111 views
0

我需要SQL转换语句的帮助。我有NetQuanity(masterTable)这是一个varchar(15),我有另一个表是购买价格(PO TABLE),这是钱。当我尝试将它们相乘的SQL视图中给我的错误:SQL转换语句

enter image description here

+1

NetQuanity(masterTable)它是一个varchar(15) - 为什么?是否需要将一般数字值存储为字符串? –

+3

你的varchar(15)列有什么样的数据? ''xyz''?数据是否可以转换为数字类型? –

+0

真正的解决办法是修复你的结构。您希望数学计算的数值数据永远不会储存在varcharchar字段中。 YOu不希望每次需要按照预期使用数据时进行昂贵的转换。有时需要refac数据库,这是其中之一。 – HLGEM

回答

4

如果你的领域是VARCHAR,你需要投射到操作之前的适当的数据类型。例如然而

CAST(myVarCharField as INT) * myIntField 

事先警告,如果你尝试这个字段转换为数字数据类型,它不是数字,你就可以在同一条船上。

我会建议你使用例如在CASTCONVERT,对该SO杆限定,原因如下:

相关:T-SQL Cast versus Convert

2

也许尝试使用CONVERT功能? CONVERT(money,NetQuantity)

+0

此外,请确保您的'varcharcolumn'没有无效的字符,将打破转换。在这种情况下,你会得到类似'不能将一个char值转换为金钱。该char值具有不正确的语法。“# – omarello

+2

好点。如果它确实 - 受苦! :) –

+0

+ 1因为我说:) – omarello

0

首先你有一个数据定义问题。 首先要消除主表中的任何非数字条目。

SELECT whatever FROM masterTable WHERE ISNUMERIC(NetQuanity)=1 

下一步是包含此作为计算的子查询。
在此查询中,使用CONVERT或CAST将有效量转换为整数。 即

CONVERT(INT, NetQuantity)