如何使用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。
答案 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);
现场演示
答案 2 :(得分:0)
从示例中选择ID,其中包括'%Moscow'%'