可以使用BigQuery中的Standard SQL中的正则表达式函数来选择具有特定模式的列。其中,REGEXP_MATCH函数可以用来匹配列名,并可以作为列选择器中的一个条件。
例如,以下代码可以选择以“sales_”开头的所有列:
#standardSQL
SELECT
*
FROM
`mydataset.mytable`
WHERE
REGEXP_MATCH(column_name, '^sales_')
这个查询语句在选择表“mytable”中以“sales_”开头的所有列时使用了正则表达式函数REGEXP_MATCH。
如果想要在已有的表中创建符合特定模式的列,可以使用ALTER TABLE语句和GENERATE_ARRAY函数。例如,以下代码可以在表“mytable”中创建10列,它们的列名将以“sales_”开头,后面跟随一个数字,从1到10:
#standardSQL
ALTER TABLE `mydataset.mytable`
ADD COLUMN AS
(SELECT GENERATE_ARRAY(1,10) AS array_of_numbers)
,(
SELECT ARRAY(
SELECT CONCAT('sales_', CAST(num AS STRING))
FROM UNNEST(array_of_numbers) AS num
)
);
这个语句使用了UNNEST函数来生成一个包含数字1到10的数组,并通过CONCAT函数将数字与“sales_”字符串连接在一起,以获得符合特定模式的列名。然后使用ARRAY函数将所有列名组成一个数组,并将其插入到新的列中。