You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中WHERE子句能否简写引用前缀相同、后缀递增的列(如var1~var30)?

避免手动输入var1到var30的SQL解决方案

根据你使用的SQL引擎,有几种方法可以自动生成var1到var30的序列,无需手动逐个输入:

  • BigQuery
    利用GENERATE_ARRAY生成数字序列,再通过FORMAT拼接成变量名:

    CREATE OR REPLACE TABLE patients AS
    SELECT DISTINCT id
    FROM dataset
    WHERE value IN (
      SELECT FORMAT('var%d', num)
      FROM UNNEST(GENERATE_ARRAY(1, 30)) AS num
    );
    
  • Snowflake
    使用SEQUENCE生成序列,结合字符串拼接生成变量名:

    CREATE OR REPLACE TABLE patients AS
    SELECT DISTINCT id
    FROM dataset
    WHERE value IN (
      SELECT 'var' || TO_VARCHAR(num)
      FROM TABLE(SEQUENCE(1, 30)) AS num
    );
    
  • PostgreSQL
    通过generate_series生成数字序列,转换为文本后拼接:

    CREATE OR REPLACE TABLE patients AS
    SELECT DISTINCT id
    FROM dataset
    WHERE value IN (
      SELECT 'var' || num::TEXT
      FROM generate_series(1, 30) AS num
    );
    

如果你的SQL引擎不支持上述序列生成函数,那确实没有办法完全避免手动输入所有变量名——只能先创建包含这些变量名的临时表或数组,再在主查询中引用,但仍需要一次性输入所有var1到var30的值。

内容的提问来源于stack exchange,提问作者Caitlin Haven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:02:05