带有文本数组的sql IN运算符

时间:2018-03-31 06:09:00

标签: sql postgresql

如何使用SQL查询在文本数组中查找字符串值。

假设我有:

id       location
1        {Moscow,New york}
2        {Mumbai}
3        {California,Texas}

我想找到位置为Moscow的ID。我用过:

select id from table where location in ('Moscow');但收到错误:

ERROR:  malformed array literal: "Moscow"
LINE 1: select id from table where location in ('Moscow');
DETAIL:  Array value must start with "{" or dimension information.

我正在使用Postgres。

3 个答案:

答案 0 :(得分:2)

对于DataType = Array,您可以使用method = Any。

select id from table where 'Moscow' = Any(location)

作为文件which describes DataType=Array

  

8.14.5。在数组中搜索

     

要在数组中搜索值,必须检查每个值。这个   如果你知道数组的大小,可以手动完成。

或使用 the method = Any

  

9.21.3。 ANY / SOME(数组)

     

表达式运算符ANY(数组表达式)表达式运算符SOME   (数组表达式)右侧是带括号的表达式,   必须产生一个数组值。评估左手表达式   并使用给定的运算符与数组的每个元素进行比较,   必须产生布尔结果。如果有的话,ANY的结果是“真实的”   获得了真实的结果。如果没有真实结果,结果为“假”   找到(包括数组中零元素的情况)。

答案 1 :(得分:1)

要在Array DataType中搜索,您可以使用ANY()

SELECT id FROM table WHERE 'Moscow' = ANY(location);

现场演示

  

http://sqlfiddle.com/#!17/a6c3a/2

答案 2 :(得分:0)

从示例中选择ID,其中包括'%Moscow'%'