sql - Postgres IN 运算符引发错误:array_variable 处或附近的语法错误
问题描述
我正在制作function
,我的功能之一是使用 SQLIN
运算符。基本上我想要这样的查询
select name
from atlas_ins_th_travel_place pp
where pp.name IN ('Guyana', 'Mexico');
然后我制作function
并接受varchar[]
这样的输入
CREATE OR REPLACE FUNCTION test_place(
places VARCHAR[]
) RETURNS SETOF test_place_view AS
$$
DECLARE
dummy ALIAS FOR $1;
BEGIN
-- FOR i IN 1 .. array_upper(places, 1)
-- LOOP
-- RAISE NOTICE '%', places[i]; -- single quotes!
-- array_append(dummy, places[i])
-- END LOOP;
RETURN QUERY
select name
from atlas_ins_th_travel_place
where name in places;
END;
$$ LANGUAGE plpgsql STABLE;
不幸的是,它引发了关于operator
. 我尝试制作新数组并使用它。但这无济于事
问题:
如何使用IN
运算符array
?
解决方案
为此,您需要使用运算符 ANY。IN 适用于列表,ANY 适用于数组
select name from table where name = ANY(places)
推荐阅读
- bash - Bash:带有两个语句的 For 循环,第一个语句作为第二个语句的输入
- forwarding - 在无头树莓派上远程访问华为 E3372 WebInterface
- css - 如何仅更改主页/首页的 CSS 填充
- c++ - 一个线程设置成员,而另一个在其上循环 - 这是线程不安全的吗?
- swift - 通用可解码类使用什么类型
- java - 尝试使用 Dagger 将架构更改为 MVVM 时遇到问题
- python - 通过 Python 将用户输入的 PC 名称插入到 Windows CMD 关机命令中
- java - 从 Spring Boot 测试中调用的 @Caching 方法 [@Transactional 注释] 不起作用
- php - 在 Woocommerce 中为特定用户角色禁用我的帐户编辑地址
- r - 使用可变列数将长转换为宽