在 MySQL 中,您可以使用 ELT() 函数从列表中的指定位置返回一个项目。
如何在 Postgresql 中找到相同的
--- 在MySQL中
SELECT ELT(3, 'Cat', 'Dog', 'Horse') AS 'Result';
--- 结果------------
Horse
最佳答案
使用数组:
select (array['Cat', 'Dog', 'Horse'])[3];
如果出于兼容性原因需要一个函数:
create or replace function elt(int, variadic text[])
returns text language sql immutable as $$
select $2[$1]
$$;
select elt(3, 'Cat', 'Dog', 'Horse') AS "Result";
更新。 find_in_set()
的 Postgres 等价物(来自评论的 @PavelStehule 函数的略微改进版本):
create or replace function find_in_set(text, text)
returns int immutable strict as $$
select coalesce(array_position(string_to_array($2, ','), $1::text), 0)
$$ language sql;
测试db<>fiddle.中的函数
关于mysql - Postgresql 中 ELT() 函数的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618706/