问题在SQL Server 2005 Express的
大家下午转换NVARCHAR到INTEGER,问题在SQL Server 2005 Express的
我有一个计算转换成整数的一些问题!本质上我有计算;
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)
(它计算经度,纬度之间的距离从POST代码)
现在,我可以在SELECT语句中使用这个值,输出的ISNUMERIC()
返回true!然而,当我尝试在WHERE语句WHERE .... <= 150
中限制此值时,我收到了返回的“错误,将NVARCHAR转换为INTEGER”消息。
任何人都可以帮忙吗?我试过CONVERT和CAST,如果我添加有限的WHERE ISNUMERIC(...) = 1
,我没有输出值!
所有帮助表示赞赏
最亲切的问候 皮特W¯¯
我常数值(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
??给你的异常“&-2.271495&”的理由会更有帮助。 – JanW 2010-09-29 15:23:39
是的你是正确的,“&&”是我复制和粘贴我的ASP代码。 奇怪的是,查询将运行,输出两组纬度/多头之间的距离,但是当我尝试使用的计算,以便找到成员谁住 2010-09-29 16:16:01
非常感谢,现在发布已排序。数据库模式中的数据类型不一致 – 2010-09-29 19:26:53
什么代码...? – EFraim 2010-09-29 11:49:41
' - “&-2.271495&”'东西是完全无效的。你可以发布运行的代码吗?编辑:除非你确实有一个名为'&-2.271495&'的列? – 2010-09-29 11:51:23
你能提供问题的表结构和样本数据吗? – 2010-09-29 11:57:01