我有一个表,其中包含如下所示的数据:
id oe
-- ---------------------------------------------------
1 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
2 64526915083,64526953474
3 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
4 F4DH8C607AA,F4DHAA
5 F4DH8C607AA,F4DHAA
6 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
7 64526915083,64526953474
8 F4DH8C607AA,F4DHAA
9 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
10 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
11 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
12 64526915083,64526953474
13 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
14 F4DH8C607AA,F4DHAA
15 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
Run Code Online (Sandbox Code Playgroud)
如何编写查询,在其中传递值数组并返回该列包含数组中任何值的行?
这是有效的,因为我从查找表中获得了另一个值,而我宁愿不这样做,因为表中的hol
列上没有索引pubnet
。
[请不要建议添加一个,因为我无法修改数据库]
SELECT * FROM pubnet
where hol in (select hol from id2hol where id in ('F3DH19860AA', 'F4DHAA'))
Run Code Online (Sandbox Code Playgroud)
这将是结果集:
id oe
-- ---------------------------------------------------
4 F4DH8C607AA,F4DHAA
5 F4DH8C607AA,F4DHAA
8 F4DH8C607AA,F4DHAA
9 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
10 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
13 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
14 F4DH8C607AA,F4DHAA
15 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
Run Code Online (Sandbox Code Playgroud)
您需要将逗号分隔的值转换为数组,然后您可以使用重叠运算符 &&
select *
from pubnet
where string_to_array(oe, ',') && array['F3DH19860AA', 'F4DHAA']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20057 次 |
最近记录: |