处理地理服务器中的 IS NULL SQL 参数
Handling IS NULL SQL parameters in geoserver
我正在使用查询并在其上应用样式从地理服务器上的 postgres 数据库创建一个 SQL 图层。
我想根据传递给它的参数创建两个图层,目前我正在通过创建两个单独的 SQL 图层来处理这个问题。
第一层:
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
第二层:
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
AND activity_group_id = %activity_group_id%
在通过 getMap 函数访问该图层时,我正在传递 viewParams
&viewparams=vinCode:546748;statusCode:1;attribute:Farmer
和
&viewparams=vinCode:546748;statusCode:1;activity_group_id:19;attribute:Farmer
我关心的是,我不是为相同的预期层创建 2 个单独的层,而是可以通过在 SQL 层中使用 ISNULL
函数将其处理为仅 1 个 SQL 层。
有人可以分享任何资源吗?
您可以检查您的参数是否为空,如果不是则使用它来过滤查询
...
AND (%activity_group_id% IS NULL OR activity_group_id = %activity_group_id%)
正如@JGH 所建议的那样,这是处理地理服务器上的 sql 查询的方式。
SQL层
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
AND (%activity_group_id% IS NULL OR activity_group_id = %activity_group_id%)
允许 viewparams 中的空值将正则表达式更改为 ^(?:[\w\d\s]+$)
将视图参数作为
获得所有 activity_group_id
&viewparams=vinCode:546748;statusCode:1;activity_group_id:**NULL**;attribute:Farmer
获取 activity_group_id
的特定图层
&viewparams=vinCode:546748;statusCode:1;activity_group_id:**value**;attribute:Farmer
我正在使用查询并在其上应用样式从地理服务器上的 postgres 数据库创建一个 SQL 图层。
我想根据传递给它的参数创建两个图层,目前我正在通过创建两个单独的 SQL 图层来处理这个问题。
第一层:
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
第二层:
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
AND activity_group_id = %activity_group_id%
在通过 getMap 函数访问该图层时,我正在传递 viewParams
&viewparams=vinCode:546748;statusCode:1;attribute:Farmer
和
&viewparams=vinCode:546748;statusCode:1;activity_group_id:19;attribute:Farmer
我关心的是,我不是为相同的预期层创建 2 个单独的层,而是可以通过在 SQL 层中使用 ISNULL
函数将其处理为仅 1 个 SQL 层。
有人可以分享任何资源吗?
您可以检查您的参数是否为空,如果不是则使用它来过滤查询
...
AND (%activity_group_id% IS NULL OR activity_group_id = %activity_group_id%)
正如@JGH 所建议的那样,这是处理地理服务器上的 sql 查询的方式。
SQL层
SELECT
activity_group_id, activity_name, application_status_code,
village_code, geom
FROM
dbt.dbt_point_primary
WHERE
village_code = '%vinCode%'
AND attributes = '%attribute%'
AND application_status_code = %statusCode%
AND (%activity_group_id% IS NULL OR activity_group_id = %activity_group_id%)
允许 viewparams 中的空值将正则表达式更改为 ^(?:[\w\d\s]+$)
将视图参数作为
获得所有 activity_group_id
&viewparams=vinCode:546748;statusCode:1;activity_group_id:**NULL**;attribute:Farmer
获取 activity_group_id
的特定图层
&viewparams=vinCode:546748;statusCode:1;activity_group_id:**value**;attribute:Farmer