SQL Server 2005 Express中将NVARCHAR转换为整数时出现问题
各位下午好, 我在将计算转换为整数时遇到了一些问题!基本上我有计算能力SQL Server 2005 Express中将NVARCHAR转换为整数时出现问题,sql,sql-server-2005-express,Sql,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
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 我将表引用(tblPostCode.PCLng、tblPostCode.PCLat)替换为常量值(5和6)以测试查询。正如马丁·史密斯(Martin Smith)在评论中已经提到的那样,引号中的表达完全无效。这可能是前一个问题的残余吗?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&”这个东西是完全无效的。你能发布运行的代码吗?编辑:除非您确实有一个名为&-2.271495&
的列,否则您可以提供表结构和示例数据来解决这个问题吗???给出异常“&-2.271495&”的原因会更有帮助。是的,你是对的,&&&”是我复制和粘贴我的ASP代码。奇怪的是,查询将运行,输出两组lat/long之间的距离,但是当我尝试使用计算来查找居住距离小于200英里的成员时,查询将输出居住距离小于200英里的所有成员,然后移动到下一个不居住距离的成员并抛出错误!“选择…[计算]”=运行正常“选择…[计算]”。。。其中[the calculation]