Как я могу комбинировать ЛЮБОЙ параметр Postgresgl ArrayField с LIKE - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь отфильтровать набор запросов по первым символам элемента в ArrayField в postgresql.

Data
--------------------
|  id  | registration_date  |  sbi_codes           |
|  1   |    2007-11-13      |  {9002, 1002, 85621} |
|  2   |    2010-10-11      |  {1002, 9022, 9033   |
|  3   |    2019-02-02      |  {9001, 8921}  |
|  4   |    2012-02-02      |  {120}               |

Я пробовал следующее (что, очевидно, не работает), но я думаю, ясно указывает на то, чего я пытаюсь достичь.

select count(*)
from administrations_administration
where '90' = left(any(sbi_codes),2)

или

select count(*)
from administrations_administration
where '90%' like any(sbi_codes

Таким образом, sbi_codes может быть, например, 9002 или 9045, и я пытаюсь фильтровать все записи, содержащие элемент, начинающийся с 90.

ожидаемый результат

____
| count | sbi_codes  |
|  3    | 90          |

Спасибо!

1 Ответ

0 голосов
/ 07 мая 2020

В левой части LIKE находится строка, в которой% - это просто%. Справа находится шаблон, в котором% - это подстановочный знак. Использование ANY не изменяет эту семантику, шаблон по-прежнему работает правильно.

Чтобы решить эту проблему, вы можете создать свой собственный оператор , который похож на LIKE, но имеет обратные аргументы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...