# standardSQL
SELECT
FORMAT(
"count of null ('')id = %d. List of id is: %s",
COUNT(*),
STRING_AGG(CAST(ID AS STRING))
) AS output
FROM `project.dataset.table`
WHERE REGEXP_CONTAINS(String, r"(?i)''\s+(?:as|)\s+(?:id|\[id\])")
如果要应用于问题的样本数据,则输出为
Row output
1 count of null ('')id = 3. List of id is: 1,2,5
select 1 from (select replace(replace(replace(replace('select "" as do, "" as [id] form table1',' ',''),'[',''),']',''),'"',"'") as tt)
where tt like ("%''asid%")
3条答案
按热度按时间qf9go6mv1#
下面是bigquery标准sql
如果要应用于问题的样本数据,则输出为
nkkqxpd92#
其思想是将所有字符串统一到可以用“%”asid%“或regex首先用“”替换所有空格的内容
将“[”,“]”替换为“”。
使“或”的用法一致。
然后用like查询。
例如:
这不是一个“聪明”的主意,但很简单。
更好的方法是将查询列保存在repeat列“'”as id'中,并将表保存在另一列中。
您不需要保存“select”和“from”,这样您就可以方便地进行查询,还可以根据数据组装查询。
0yg35tkg3#
如果我没弄错的话,你想数一数
''
在string
列。如果是的话,你可以用
regexp_extract_all()
: