如何筛选 "show tables"

How to filter "show tables"

我想过滤 show tables 的输出。 文档中有 one example 说明如何使用 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的输出中, 所以我不明白哪里出了问题。

最佳,

大卫

您可以使用 $<col_n> 语法(#8 表示行)引用过滤列。

示例:

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

话虽如此,你的查询对我有用。

运行 在您的帐户中添加以下内容并查看其设置:

show parameters like 'QUOTED_IDENTIFIERS_IGNORE_CASE';

如果将其设置为 TRUE,则会忽略查询中的引号,然后将大写列名,这与 SHOW 输出的小写名称不匹配。

要解决您自己的会话,您可以运行以下操作:

ALTER SESSION SET QUOTED_IDENTIFIERS_IGNORE_CASE = False;

您也可以根据需要在用户或帐户级别更改此设置。不建议将此值设置为 TRUE,因为您运行正在进入。