【发布时间】:2012-10-01 14:38:29
【问题描述】:
我正在尝试运行一个简单的查询,在BigQuery 中设置了 like % 的限制,但 LIKE 不在它们的语法中,那么如何实现呢?
【问题讨论】:
标签: google-bigquery
我正在尝试运行一个简单的查询,在BigQuery 中设置了 like % 的限制,但 LIKE 不在它们的语法中,那么如何实现呢?
【问题讨论】:
标签: google-bigquery
如果 str 匹配正则表达式,REGEXP_MATCH 返回 true。对于没有正则表达式的字符串匹配,请使用 CONTAINS 而不是 REGEXP_MATCH。
https://developers.google.com/bigquery/docs/query-reference#stringfunctions
【讨论】:
如果您知道如何使用REGEXP_MATCH,它会很棒,但对于那些不确定是否有任何常用的特殊字符(例如'.'、'$' 或'?')的人来说。在查找字符串中,您可以使用LEFT('str', numeric_expr) 或RIGHT('str', numeric_expr)。
即,如果您有一个名称列表并且想要返回所有像“sa%”这样的名称
你会使用:
select name from list where LEFT(name,2)='sa';(其中 2 是 'sa' 的长度)
此外,如果您想说明一列的值与另一列的值在哪里,您可以将 2 替换为 LENGTH(column_with_lookup_strings) 和 ='sa' 替换为 =column_with_lookup_strings,使其看起来像这样:
select name from list where LEFT(name,LENGTH(column_with_lookup_strings))= column_with_lookup_strings;
【讨论】:
BigQuery 标准 SQL 正式支持 LIKE - https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#comparison_operators
而且我认为它也适用于 Legacy SQL!
【讨论】: