捕获 select 语句中除表中的一列之外的所有列

2024-04-19

有没有办法像我们一样选择除 Snowflake 中的一列之外的所有列bigquery https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#select_except:

select * except(columnname) from table

2022 更新:Snowflake 现在支持 EXCLUDE():

测试:

with data as (
    select 1 col_a, 2 col_b, 3 col_c, 4 col_d
)

select *, col_a as id
    exclude (col_c, col_b, col_a)
from data
  • https://twitter.com/felipehoffa/status/1593311749100294144 https://twitter.com/felipehoffa/status/1593311749100294144

之前的回答:

代替EXCEPT语法,我编写了一个存储过程,可以为您提供列列表SELECT for:


create or replace procedure cols_except(table_name varchar, except varchar)
returns varchar
language sql as 
begin
    describe table identifier(:table_name);
    return (
        select listagg("name", ', ') cols_except
        from table(result_scan(last_query_id())) 
        where not array_contains("name"::variant, (split(:except, ','))) 
    );
end;

在删除与 except 子句匹配的值后,您可以使用它来获取要选择的列:

call cols_except('snowflake_sample_data.tpch_sf1.nation', 'N_NAME,N_REGIONKEY');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获 select 语句中除表中的一列之外的所有列 的相关文章

  • 雪花中的断言

    有没有办法在 Snowflake 中执行断言 基本上 我正在尝试做一些测试 TDD 并且我想要一种类似于其他语言中的断言的机制 如果断言成功 则返回 true 和 或打印成功消息 如果断言失败 则会引发异常 我找不到任何在 Snowflak
  • 如何生成数据来测试 Snowflake 处理数千列表的能力?

    Snowflake 可以处理数千列吗 有没有办法可以生成测试数据来测试 Snowflake 在处理 比方说 2000 列时的性能 使用此脚本 您可以创建一个包含 2000 或任意数量 列的表 并为每个列指定一个默认随机值 CREATE or
  • Snowflake - ALTER TABLE ADD COLUMN 的日期常量/文字

    如何定义可使用的常量 日期文字ALTER TABLE ADD COLUMN 根据文档 日期和时间常数 常量 也称为文字 是指固定的数据值 Snowflake 支持使用字符串常量来指定固定的日期 时间或时间戳值 字符串常量必须始终包含在分隔符
  • 如何在雪花用户定义函数中编写动态查询

    我正在雪花中编写以下函数 create OR REPLACE function myTestFunc tbl name VARCHAR Column Name varchar id VARCHAR returns varchar as se
  • Snowflake - 如何检索当前正在执行的过程的名称?

    我想在 javascript 过程本身中访问 Snowflake 中当前执行的过程的名称并将其存储在变量中 当我询问 this 对象时 我可以在 Variant 返回中看到名称 但就 JSON 而言 我相信这是名称而不是值 并且我不确定如何
  • 如何在 Snowflake 中使用带有空值的 GREATEST() ?

    我正在尝试使用GREATEST 在雪花中 但每当我有空值时 我就会得到null而不是期望的结果 select greatest 1 2 null null 这种行为让很多人感到困惑 这要从以下行为开始 GREATEST 在 Oracle 中
  • 如何使用 Snowflake SQL 解析 ISO 8601 时间戳?

    我正在寻找一个允许我解析 ISO8601 时间戳的通用函数 我知道关于to timestamp tz https docs snowflake net manuals sql reference functions to timestamp
  • 如何使用 DAO 插入雪花变体字段?

    我有以下代码 RegisterMapper MyEntity ResultMapper class UseStringTemplate3StatementLocator public interface MyDao Transaction
  • CASE 语句未正确定义列雪花

    我有一个以下格式的查询 用于执行COALESCE以及使用定义一个新列CASE陈述 SELECT COALESCE mm1 missing AS mm1 COALESCE mm2 missing AS mm2 CASE WHEN mm1 fa
  • 雪花 - 横向不能位于连接的左侧

    我有一个变体数据类型 我正在对其执行横向展平 但随后我需要左连接其中一个 json 元素 以从 Snowflake 中的另一个关系表中查找相应 ID 的值 当我这样做时 它会给我错误 横向视图不能位于连接的左侧 这是没有意义的 因为如果我不
  • 当只有 1 个实例时,Snowflake XML 解析不适​​用于嵌套结构

    我们在 Snowflake 中有一个名为 portfolio 的临时表 其中有一个名为 cdc xml 的 Variant 列 用于存储 Snowpipe 通过 S3 加载的 XML 文档 XML 看起来像
  • 如何替换雪花中的重音字符?

    我正在尝试将列中的重音字符替换为 普通 字符 select 我想要一些会返回 aaaaaa 的操作 刚刚和我的一位同事找到了解决方案 select translate aeiouaoaeoac 我们还可以添加一个lower 使其推广到更多案
  • 雪花中有保存或加载工作表的选项吗?

    雪花中有保存或加载工作表的选项吗 或者将工作表下载到本地并从本地加载 我的意思不是通过剪贴板将其粘贴到某些文本编辑器并保存这样的选项 Snowflake 会自动保存您的工作表 您还可以将脚本从本地加载到工作表 但是无法下载工作表 Saved
  • 如何将雪花中单词的第一个字母大写?

    我需要在 Snowflake 中将 mySQL 查询中某些单词的首字母大写 我目前正在使用这个功能 SELECT case when FLAG1 is null then upper FLAG2 else FLAG1 END as STAT
  • 如何检索数据库(如雪花或任何此类数据库)中的所有目录名称、模式名称和表名称?

    我需要删除一些列并将雪花表中的数据大写 为此 我需要循环遍历所有目录 数据库 其各自的模式 然后是表 我需要在 python 中列出目录模式 然后列出表 然后我将执行 SQL 查询来执行操作 如何继续 1 列出所有目录名称 2 列出所有模式
  • “数字值''无法识别” - 哪一列?

    我正在尝试将数据从临时表插入到主表中 该表有近 300 列 混合了 Varchars Integers Decimals Dates 等数据类型 Snowflake 给出了无用的错误消息 无法识别数值 我已经仔细检查并删除了查询的各个部分
  • 无法使用 Python 连接器和外部浏览器身份验证器连接到 Snowflake

    我正在尝试使用 Python 连接器和 SSO 连接到 Snowflake 我希望连接器打开浏览器来验证用户身份 但这不起作用 h Code bin gt python conn py Initiating login request wi
  • 将 JSON 值列表分解为 SNOWFLAKE 数据库表中的行

    我有一个如下图所示的表格 它基本上是一个 JSON 经过解析后得到下面的输出 现在我希望将 City 和 order 列中的值列表拆分为行 有人可以帮我吗 期望的输出如下 这是一种方法 首先去掉 和 因为 city 列中的双引号不包含单个数
  • 将 YYYYMMDD 字符串转换为 Snowflake 中的 YYYY-MM-DD 日期格式

    基于雪花中提到的示例文档 https docs snowflake com en sql reference functions to date html 为什么仅通过更改 ORDER BY 子句 日期和时间戳值就会返回不同的值 另外 我正
  • MERGE 命令导致序列号出现间隙

    我试图利用 MERGE 命令来填充 Snowflake 中的维度 为了实现代理键 我创建了一个默认为序列号的列 每当插入新行时该序列号就会自动递增 我在其他数据仓库平台上尝试了类似的方法 但从未引起任何问题 但是 我注意到 每当我在 Sno

随机推荐