QUERY contains с учёта регистра

74 views
Skip to first unread message

Михаил Е. Попов

unread,
Nov 25, 2021, 1:29:37 AM11/25/21
to contributor.pw
День добрый!

Есть ли возможность использовать QUERY contains с учёта регистра символов?

Заранее признателен.

С уважением, Михаил Попов 

contributor.pw

unread,
Nov 25, 2021, 2:33:11 AM11/25/21
to contributor.pw
Добрый!

Если я вас правильно понял, то я, например предпочитаю строить поисковый индекс через ARRAYFORMULA или INDEX

=INDEX(
  QUERY(
    {D2:D19\LOWER(D2:D19)};
    "select Col1 where Col2 contains 'foo'"
  )
)

1637825480946.png

Михаил Е. Попов

unread,
Nov 25, 2021, 3:25:20 AM11/25/21
to contributor.pw
Спасибо.
У меня строка запроса формируется слегка динамически и выглядит:
=" select * " & ЕСЛИ(ДЛСТР(...)>0;" WHERE ";"") & A_Text & B_Active & F_ЖК ...

подробности на https://docs.google.com/spreadsheets/d/1iL0vTsI8DWBYU3R-2v76OCus7D0e7Kwl8dTapHz_L08/edit#gid=2061025267 лист Фильтр ячейка A20 Не могу сообразить как интегрировать Ваше решение ...

четверг, 25 ноября 2021 г. в 10:33:11 UTC+3, contributor.pw:

contributor.pw

unread,
Nov 25, 2021, 4:10:16 AM11/25/21
to contributor.pw
Все так и остается. Вы получаете весь массив, а потом справа добавляете поля для поиска.

Обратите внимание, что теперь доступ к полям через Col.


1637831305734.png

Михаил Е. Попов

unread,
Nov 30, 2021, 2:57:06 PM11/30/21
to contributor.pw
День добрый!

Большое спасибо!

Если это единственный выход, как бы заменить динамически формирующиеся ссылки вида
 select * WHERE B = TRUE and F = 'Roza' and G>=111
на 
 select * WHERE Col2 = TRUE and Col6 = 'Roza' and Col7>=111
?
Ссылка формируется из множества непростых формул ...
Или писать функцию пользователя, парсящую формулу ...?


четверг, 25 ноября 2021 г. в 12:10:16 UTC+3, contributor.pw:

Михаил Е. Попов

unread,
Nov 30, 2021, 4:29:27 PM11/30/21
to contributor.pw
Ещё раз благодарю  contributor.pw за помощь!
Пока устроило query без index.
Обернул столбец в lower() и обязал пользователей писать текст в нижнем регистре.
Теперь запрос стал таким:
select *  where lower(A) contains 'тест' ...

вторник, 30 ноября 2021 г. в 22:57:06 UTC+3, Михаил Е. Попов:

Alexander Ivanov ✔

unread,
Dec 1, 2021, 2:08:54 AM12/1/21
to contributor.pw
Отлично! Рад, что все получилось.

Насчет того, чтобы формировать запрос с заменой. Скорее всего "просто так" не получится. Можно попробовать просто соединить две Таблицы горизонтально и произвести замену имен колонок начиная с известного индекса, т.е A - Col26, B - Col27 и т.д. Но это может быть неудобным в чтении.

Reply all
Reply to author
Forward
0 new messages