我在PostgreSQL数据库中有一个表(例如Users
)。它的大小相对较大(约4 GB的数据),我希望得到一个表/结果,包含满足select
查询的单行。应该对字符串数组中的每个元素执行此查询(几十个元素)。
单个选择一个元素的示例:
SELECT * FROM "Users" WHERE "Surname" LIKE 'Smith%' LIMIT 1
'
和%'
之间的值应该是输入数组的元素。
LIKE 'Smith%'
的1或2
我怎样才能做到这一点?
我试图将查询结果附加到FOREACH
循环中的某个数组变量,但没有成功。
示例源表:
| Id | Name | Surname |
|---- |-------- |---------- |
| 1 | John | Smiths |
| 2 | Adam | Smith |
| 3 | George | Kowalsky |
| 4 | George | Kowalsky |
| 5 | Susan | Connor |
| 6 | Clare | Connory |
| 7 | Susan | Connor |
对于['Smith', 'Connor']
,输出为:
| Id | Name | Surname |
|----|-------|---------|
| 1 | John | Smiths |
| 5 | Susan | Connor |
答案 0 :(得分:2)
在Postgres中,您可以使用ANY
运算符将单个值与数组的所有值进行比较。这也与LIKE
运算符一起使用。
SELECT *
FROM "Users"
WHERE "Surname" like ANY (array['Smith%', 'Connor%'])
请注意LIKE
区分大小写,如果您不想这样,可以使用ILIKE
答案 1 :(得分:-1)
这将向您显示逻辑。语法取决于你。
where 1 = 2
start of loop
or surname like 'Array Element goes here%'
end of loop