You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Geography类型相交查询报错:隐式转换不允许问题求助

问题分析与解决

错误原因

你的查询存在一个核心逻辑错误:geography::STGeomFromText(@poligonoEspaña, 4326)这行代码完全多余且逻辑有误。STGeomFromText函数的第一个参数要求是WKT格式的字符串,但你传入的@poligonoEspaña已经是geography类型变量,SQL Server会尝试将geography类型隐式转换为字符串,这直接触发了报错提示里的“不允许隐式转换geography到nvarchar”问题。

修正后的SQL代码

直接使用已定义好的@poligonoEspaña变量调用STIntersects方法即可:

declare @poligonoEspaña geography;
set @poligonoEspaña = geography::STGeomFromText('POLYGON((
-17.91124999999994 27.773750000000064,
-17.963889999999935 27.682360000000074,
-17.982779999999934 27.637500000000045,
-18.014449999999954 27.649440000000084,
-18.156109999999956 27.705280000000073,
-18.169859999999915 27.735760000000084,
-18.167499999999905 27.753610000000037,
-18.16110999999995 27.76194000000004))', 4326);

select *
from [PeritosJudiciales].[dbo].[Inmueble]
where Inmueble.Posicion is not null and @poligonoEspaña.STIntersects(Inmueble.Posicion) = 1;

额外注意事项

你定义的西班牙多边形是开放状态(起点与终点坐标不一致),不符合OGC规范,可能导致后续地理计算出现异常。建议将多边形的最后一个点与第一个点设为相同坐标,闭合多边形,比如在WKT末尾补充:
-17.91124999999994 27.773750000000064))', 4326);

内容的提问来源于stack exchange,提问作者VoodooArts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:52:42