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 转换语句的主要内容,如果未能解决你的问题,请参考以下文章

查询 sql 语句,为null转换为0怎么做

在SQL语句里怎么转换数据类型?

sql语句中数据类型转换怎么写

访问语句转换为 Sql

SQL语句的行列转换

Access IIF 到 SQL 语句的转换