SQL - IN 运算符获取位置

标签 sql postgresql

是否可以通过 IN 运算符获取参数列表的第一个参数的位置(索引)?

我正在寻找的结果如下:

SELECT 2 IN(2, 3, 1); -- Result I want is 0 but with IN is true
SELECT 3 IN(2, 3, 1); -- Result I want is 1 but with IN is true
SELECT 0 IN(2, 3, 1); -- Result I want is -1 but with IN is false
SELECT 1 IN(1, 1, 3); -- RESULT I WANT IS 0 ,1 but with IN is true

最佳答案

你不能用一个“普通”的 IN 子句来做到这一点,但你可以用一个数组和 unnest 函数来做到这一点:

select t.idx
from unnest(array[2,3,1]) with ordinality t(v,idx)
where t.v = 2;

select t.idx
from unnest(array[1, 1, 3]) with ordinality t(v,idx)
where t.v = 1;

但是,如果要搜索的值不在数组中,您将根本找不到任何行。

关于SQL - IN 运算符获取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39141582/

相关文章:

sql - 跟踪表中值更新的时间

c++ - 您可以从 MS SQL Server 调用 C++ 应用程序吗?

mysql - mysqldump 命令中的语法错误

php - 使用带有 pg_update() PHP 的事务

postgresql - Postgres UTC 日期格式和纪元转换、符号反转

postgresql - 在 Postgresql 中创建全局变量

sql - 如何有效地对 SQL 数据库中的记录进行版本控制

Python3.6函数未调用

postgresql - 在 Google 云平台上的 Kubernetes 中创建持久卷

mysql - 何时/为何使用(组合)索引?