SQL 转换语句
Posted
技术标签:
【中文标题】SQL 转换语句【英文标题】:SQL Convert statement 【发布时间】:2011-12-02 20:38:02 【问题描述】:我需要有关 的帮助。我有 NetQuanity (masterTable),它是一个 varchar(15),我有另一个表,其中包含购买价格 (PO TABLE),它是钱。当我尝试在 SQL 视图中将它们相乘时,会出现错误:
【问题讨论】:
NetQuanity (masterTable) 这是一个 varchar(15) - 为什么?是否需要将一般数值存储为字符串? 您的 varchar(15) 列中有哪些类型的数据?'xyz'
?数据是否可以转换为数值类型?
真正的修复是修复你的结构。您想用于数学计算的数字数据永远不能存储在 varchar 字段中。您不想在每次需要按预期使用数据时进行昂贵的转换。有时需要重构数据库,这就是其中之一。
【参考方案1】:
如果您的字段是 VARCHAR,则需要在操作之前转换为适当的数据类型。例如
CAST(myVarCharField as INT) * myIntField
但是请注意,如果您尝试将此字段转换为数字数据类型并且它不是数字,那么您将处于同一条船上。
我建议在您的示例中使用 CAST
而不是 CONVERT
,原因在此 SO 帖子中定义如下:
相关:T-SQL Cast versus Convert
【讨论】:
【参考方案2】:也许尝试使用CONVERT
函数? CONVERT(money,NetQuantity)
.
【讨论】:
另外,请确保您的varcharcolumn
没有会破坏转换的无效字符。在这种情况下,你会得到类似Cannot convert a char value to money. The char value has incorrect syntax.
【参考方案3】:
首先你有一个数据定义问题。 首先是消除主表中的任何非数字条目。
SELECT whatever FROM masterTable WHERE ISNUMERIC(NetQuanity)=1
下一步是将其作为子查询包含在计算中。 在此查询中,使用 CONVERT 或 CAST 将有效数量转换为整数。 即
CONVERT(INT, NetQuantity)
【讨论】:
以上是关于SQL 转换语句的主要内容,如果未能解决你的问题,请参考以下文章