选择数组中列值的位置

问题描述 投票:0回答:2

假设我有一个名为“myTable”的表:

columnA|    columnB|    columnC
   1   |     Yellow|     Apple
   3   |     Red   |     Grape
   8   |     Blue  |     Banana
   6   |     Green |     Orange

上表是出于演示目的对实际表的简化。想象一下实际表有 100K + 行。现在,我只想选择列表/数组中 columnB 所在的行:例如 - ['Red', 'Blue', 'Green']。我不确定在这里使用正确的语法。

 SELECT * FROM myTable WHERE columnB IN Array['Red', 'Blue', 'Green']

实现此目的的正确语法是什么?

sql arrays postgresql where-clause
2个回答
3
投票

这是示例,我相信它适用于 MS SQL

SELECT p.FirstName, p.LastName, e.JobTitle  
FROM Person.Person AS p  
    JOIN HumanResources.Employee AS e  
    ON p.BusinessEntityID = e.BusinessEntityID  
WHERE e.JobTitle IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant');  

或者简单的文字(注意文本是否位于下、上或正确的底部)。

SELECT * FROM design WHERE Color IN ('Red', 'Green', 'Blue');  

2
投票

在 Postgres 中,您也可以使用数组,通过

= ANY ()
:

SELECT * FROM myTable WHERE columnB = ANY (ARRAY['Red', 'Blue', 'Green']);

或者使用文字数组常量作为输入:

SELECT * FROM myTable WHERE columnB = ANY ('{Red, Blue, Green}'::text[]);

相当于:

SELECT * FROM myTable WHERE columnB IN ('Red', 'Blue', 'Green');

相关:

© www.soinside.com 2019 - 2024. All rights reserved.