0

大家下午,

我在将计算转换为整数时遇到了一些问题!基本上我有计算;

CAST(ROUND(SQRT(SQUARE(69.1*(CAST(tblPostCode.PCLat AS DECIMAL(30,15)) - "& 53.078282 &")) + SQUARE(69.1 * (CAST(tblPostCode.PCLng AS DECIMAL(30,15)) - "& -2.271495 &") * COS(CAST(tblPostCode.PCLat AS DECIMAL(30,15))/57.3))),0) AS INTEGER)

(它根据邮政编码计算经度和纬度之间的距离)

现在,我可以在 SELECT 语句中使用这个值,并且ISNUMERIC()输出返回true!

但是,当我尝试在 WHERE 语句中限制此值时WHERE .... <= 150,我收到返回的“将 NVARCHAR 转换为整数时出错”消息。

任何人都可以帮忙吗?我已经尝试过 CONVERT 和 CAST ,如果我添加了 limitedWHERE ISNUMERIC(...) = 1我没有输出值!

感谢所有帮助

最诚挚的问候皮特 W

4

1 回答 1

0

我用常量值(5 和 6)替换了你的表引用(tblPostCode.PCLng、tblPostCode.PCLat)来测试你的查询。正如马丁史密斯在他的评论中已经提到的那样,引号中的表达是完全无效的。这可能是以前查询的遗留物吗?sql 所做的是尝试将表达式转换为由于引号中的“&”而失败的整数。如果您删除标记并保持恒定值,它对我有用:

SELECT  CAST(ROUND(SQRT(SQUARE(69.1
                               * ( CAST(5 AS DECIMAL(30, 15))
                                   - 53.078282 )) + SQUARE(69.1
                                                              * ( CAST(6 AS DECIMAL(30,
                                                              15))
                                                              - 2.271495 )
                                                              * COS(CAST(5 AS DECIMAL(30,
                                                              15)) / 57.3))),
                   0) AS INTEGER)

结果是:

3332
于 2010-09-29T11:59:31.407 回答