【发布时间】:2022-11-03 23:08:23
【问题描述】:
我正在使用postgresql。
假设我有这个表名my_table:
id | idcm | stores | du | au | dtc |
----------------------------------------------------------------------------------
1 | 20447 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-11-03 11:12:19.213799+01 |
2 | 20456 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-11-03 11:12:19.213799+01 |
3 | 20478 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-11-03 11:12:19.213799+01 |
4 | 20482 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-11-03 11:12:19.213799+01 |
5 | 20485 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-10-25 20:25:08.949996+02 |
6 | 20497 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-10-25 20:25:08.949996+02 |
7 | 20499 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-10-25 20:25:08.949996+02 |
我只想选择具有id 值的行等于stores(该行)中的数组元素之一。
但是stores的类型不是数组,是jsonb。
所以我想得到这样的东西:
id | idcm | stores | du | au | dtc |
----------------------------------------------------------------------------------
2 | 20456 | [2, 5] | 2022-11-02 | 2022-11-15 | 2022-11-03 11:12:19.213799+01 |
5 | 20485 | [7, 5] | 2022-11-02 | 2022-11-15 | 2022-10-25 20:25:08.949996+02 |
6 | 20497 | [2, 6] | 2022-11-02 | 2022-11-15 | 2022-10-25 20:25:08.949996+02 |
7 | 20499 | [5, 7] | 2022-11-02 | 2022-11-15 | 2022-10-25 20:25:08.949996+02 |
我试过了
select * from my_table where stores::text ilike id::text;
但它返回零行,因为我需要在id 之前和之后放置通配符%,
所以我尝试过
select * from my_table where stores::text ilike %id%::text;
但我得到一个语法错误。
【问题讨论】:
-
对不起,它是
id。问题已更新
标签: sql postgresql jsonb