Как отфильтровать «покажи таблицы» - PullRequest
0 голосов
/ 20 февраля 2020

Я бы хотел отфильтровать вывод show tables. В документации есть один пример о том, как это сделать с помощью result_scan(last_query_id()), но для меня этот пример не работает:

show tables;
select  "schema_name", "name" as "table_name", "rows"
    from table(result_scan(last_query_id()))
    where "rows" = 0;
-- SQL compilation error: error line 1 at position 8 invalid identifier 'SCHEMA_NAME'

Столбец SCHEMA_NAME фактически выводится show tables, поэтому я не понимаю, что не так.

Best,

Davide

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

Запустите следующую команду для своей учетной записи и посмотрите, что для нее установлено:

show parameters like 'QUOTED_IDENTIFIERS_IGNORE_CASE';

Если для этого параметра установлено значение TRUE, то оно игнорирует кавычки в вашем запросе, которые затем вводят имена столбцов в верхнем регистре , который не будет соответствовать строчным именам вывода SHOW.

Чтобы разрешить для своего собственного сеанса, вы можете выполнить следующее:

ALTER SESSION SET QUOTED_IDENTIFIERS_IGNORE_CASE = False;

Вы также можете изменить это в уровень пользователя или учетной записи, если вы sh. Установка этого значения в TRUE не рекомендуется по той причине, с которой вы сталкиваетесь.

0 голосов
/ 20 февраля 2020

Вы можете ссылаться на столбец фильтра, используя синтаксис $<col_n> (# 8 для строк).

Пример:

show tables;
select *
from table(result_scan())
where $8 > 5

При этом ваш запрос сработал для меня.

...