Postgresql 函数和运算符最多只能接受一个设置参数错误

标签 postgresql

我正在使用 PostGIS,但我不明白这个请求有什么问题?

WITH ligne AS (SELECT 42 AS id, ST_transform('SRID=4326;LINESTRING(2.232 48.818, 2.246 48.82)'::geometry, 27572) AS geom)
SELECT ST_locate_along_measure(ST_addmeasure(geom, 0, ST_Length(geom)), generate_series(0, ST_length(geom)::int, 50)) FROM ligne;

我收到错误:错误:函数和运算符最多只能接受一个集合参数

此请求有效,但我不明白两者之间的区别:

WITH ligne AS (SELECT 42 AS id, ST_transform('SRID=4326;LINESTRING(2.232 48.818, 2.246 48.82)'::geometry, 27572) AS geom),
ligne3dm AS (SELECT ST_addmeasure(geom, 0, ST_Length(ligne.geom)) as geom FROM ligne),
pas50m AS (SELECT generate_series(0, ST_length(ligne.geom)::int, 50) as pas FROM ligne)
SELECT ROW_NUMBER() OVER () AS id, ST_locate_along_measure(ligne3dm.geom, pas50m.pas) FROM ligne3dm, pas50m;

最佳答案

解决方案很简单,generate_series 返回一个生成器,但 ST_Locate_Along_Measure 正在等待一个整数。

这会起作用:

WITH ligne AS (SELECT 42 AS id, ST_transform('SRID=4326;LINESTRING(2.232 48.818, 2.246 48.82)'::geometry, 27572) AS geom),
generator AS (SELECT generate_series(0, ST_Length(ligne.geom)::int, 50) as pas FROM ligne)
SELECT ST_locate_along_measure(ST_addmeasure(ligne.geom, 0, ST_Length(ligne.geom)), generator.pas) FROM ligne, generator;

关于Postgresql 函数和运算符最多只能接受一个设置参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378938/

相关文章:

java - 将 postgresql jdbc 驱动程序与 wildfly-arquillian-container-driven 结合使用

sql - 奇怪的 pgsql 查询性能

python - 如何提高列表中多次追加的性能?

c - postgreSQL 客户端 (libpq) 中的段错误

postgresql - docker compose : postgresql create db, 用户通过并授予权限

postgresql - 在 PostgreSQL 中选择字符串的值

spring - 在 JDBC 中启用 PostgreSQL 扩展

sql - 在 Postgresql 中逆透视

ruby-on-rails - 服务器需要 postgres,即使我在其上使用 sqlserver

postgresql - 查找每个国家/地区的最小值和最大值