我想选择所有列名包含子字符串'age_'的列
id gender age_now age_graduated
aa F 21 25
bb M 34 24
我只想要'age_now'和'age_graduated'列
答案 0 :(得分:2)
如果您不介意使用某些Python来生成查询:
from google.cloud import bigquery
client = bigquery.Client(project=project_id)
table = client.get_table(
client.dataset('public_dump', project='fh-bigquery').table('test201602'))
pattern_cols = [x.name for x in table.schema if x.name.startswith("inferred")]
print ( "SELECT %s\nFROM `%s.%s.%s`" % (
','.join(pattern_cols), table.project, table.dataset_id, table.table_id))
答案 1 :(得分:0)
如果您知道前缀不是age_
的列,则可以使用SELECT * EXCEPT:
SELECT * EXCEPT id, gender
FROM tab;
AFAIK没有类似的语法:
SELECT * LIKE 'age_%'
FROM tab
因此,唯一的解决方案是读取元数据INFORMATION_SCHEMA.COLUMNS表并构建动态SQL查询。