Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在prepare语句变量将成为较大字符串的一部分时添加它们_Postgresql_Postgis - Fatal编程技术网

Postgresql 在prepare语句变量将成为较大字符串的一部分时添加它们

Postgresql 在prepare语句变量将成为较大字符串的一部分时添加它们,postgresql,postgis,Postgresql,Postgis,所以基本上我的问题是这个。我有一个sql语句,它是从数据库中的一个表中获取的。此SQL语句中包含准备好的语句变量的占位符。我使用包装器类来替换变量。包装器类负责确保它们在传递到PostgreSQL时是正确的类型。我的语句中出现语法错误,这让我发疯。预处理语句的一部分是ST_GeomFromText()函数中使用的字符串。此字符串的值由准备好的语句变量填充。奇怪的是,这些变量不仅被连接到字符串中,而且通过我收到的错误的外观被视为单独的实体。有关我尝试过的查询和错误消息的示例,请参见下文 有人能解释

所以基本上我的问题是这个。我有一个sql语句,它是从数据库中的一个表中获取的。此SQL语句中包含准备好的语句变量的占位符。我使用包装器类来替换变量。包装器类负责确保它们在传递到PostgreSQL时是正确的类型。我的语句中出现语法错误,这让我发疯。预处理语句的一部分是ST_GeomFromText()函数中使用的字符串。此字符串的值由准备好的语句变量填充。奇怪的是,这些变量不仅被连接到字符串中,而且通过我收到的错误的外观被视为单独的实体。有关我尝试过的查询和错误消息的示例,请参见下文

有人能解释一下吗?它快把我逼疯了。我必须能够从文本构建这个几何体,并且参数必须能够通过准备好的语句传递。我遵循了C#中的轨迹,它最终将值作为字符串传递到我的命令对象参数中,因此在我能够查看的代码中没有进行转换,这将使这些值被视为字符串以外的任何东西

语句(从表中返回)

第一名。有价值的

select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
       ST_TRANSFORM(
          ST_GeomFromText('POLYGON(('||138082||' '||12907||','||207179||' '||12907||','||207179||' '||88647||','||138082||' '||88647'||','||138082||' '||12907||'))',27700),4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText('POLYGON(('||:0||' '||:1||','||:2||' '||:3||','||:4||' '||:5||','||:6||' '||:7'||','||:8||' '||:9||'))',27700),:10)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((138082 12907, 207179 12907, 207179 88647, 138082 88647, 138082 12907))$$,27700), 4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((:0 :1, :2 :3, :4 :5, :6 :7, :8 :9))$$,27700),:10)) 
as a;
第一名。没有值

select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
       ST_TRANSFORM(
          ST_GeomFromText('POLYGON(('||138082||' '||12907||','||207179||' '||12907||','||207179||' '||88647||','||138082||' '||88647'||','||138082||' '||12907||'))',27700),4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText('POLYGON(('||:0||' '||:1||','||:2||' '||:3||','||:4||' '||:5||','||:6||' '||:7'||','||:8||' '||:9||'))',27700),:10)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((138082 12907, 207179 12907, 207179 88647, 138082 88647, 138082 12907))$$,27700), 4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((:0 :1, :2 :3, :4 :5, :6 :7, :8 :9))$$,27700),:10)) 
as a;
第二名。有价值的

select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
       ST_TRANSFORM(
          ST_GeomFromText('POLYGON(('||138082||' '||12907||','||207179||' '||12907||','||207179||' '||88647||','||138082||' '||88647'||','||138082||' '||12907||'))',27700),4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText('POLYGON(('||:0||' '||:1||','||:2||' '||:3||','||:4||' '||:5||','||:6||' '||:7'||','||:8||' '||:9||'))',27700),:10)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((138082 12907, 207179 12907, 207179 88647, 138082 88647, 138082 12907))$$,27700), 4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((:0 :1, :2 :3, :4 :5, :6 :7, :8 :9))$$,27700),:10)) 
as a;
第二名。有价值的

select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
       ST_TRANSFORM(
          ST_GeomFromText('POLYGON(('||138082||' '||12907||','||207179||' '||12907||','||207179||' '||88647||','||138082||' '||88647'||','||138082||' '||12907||'))',27700),4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy 
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText('POLYGON(('||:0||' '||:1||','||:2||' '||:3||','||:4||' '||:5||','||:6||' '||:7'||','||:8||' '||:9||'))',27700),:10)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((138082 12907, 207179 12907, 207179 88647, 138082 88647, 138082 12907))$$,27700), 4326)) 
as a
select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy
from 
   ST_ENVELOPE(
      ST_TRANSFORM(
         ST_GeomFromText($$POLYGON((:0 :1, :2 :3, :4 :5, :6 :7, :8 :9))$$,27700),:10)) 
as a;
PostgreSQL日志中的错误:

第一名

2012-04-18 09:39:41 BST ERROR:  syntax error at or near "'||'" at character 283
2012-04-18 09:39:41 BST STATEMENT:  select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy from ST_ENVELOPE(ST_TRANSFORM(ST_GeomFromText('POLYGON(('||((E'138082'))||' '||((E'12907'))||','||((E'207179'))||' '||((E'12907'))||','||((E'207179'))||' '||((E'88647'))||','||((E'138082'))||' '||((E'88647'))'||','||((E'138082'))||' '||((E'12907'))||'))',27700),((E'4326')))) as a
第二名

09:39:27 BST ERROR:  parse error - invalid geometry
2012-04-18 09:39:27 BST HINT:  "POLYGON(((" <-- parse error at position 10 within geometry
2012-04-18 09:39:27 BST STATEMENT:  select st_xmin(a) minx, st_ymin(a) miny, st_xmax(a) maxx, st_ymax(a) maxy ,1, 1 from ST_ENVELOPE(ST_TRANSFORM(ST_GeomFromText($$POLYGON((((E'464217')) ((E'133902')), ((E'591014')) ((E'133902')), ((E'591014')) ((E'261209')), ((E'464217')) ((E'261209')), ((E'464217')) ((E'133902'))))$$,27700),((E'4326')))) as a;
09:39:27 BST错误:分析错误-无效几何体

2012-04-18 09:39:27英国夏令时提示:“多边形((“您的第一个错误是一个简单的语法错误,在字符行283处有一个额外的
字符。对于无值版本,请将
88647'|
更改为
88647'| |
更改为
:7 |

我无法重现你的第二个错误


关于MBR的主题,你看到了吗?他们可以帮助你。

感谢Mike。Facepalm为我提供的时刻。也感谢链接。我一定会查看的。