11

我正在尝试运行一个简单的查询,在BigQuery中限制 like % ,但 LIKE 不在它们的语法中,那么如何实现呢?

4

4 回答 4

17

您可以使用 REGEXP_MATCH 函数(请参阅查询参考): REGEXP_MATCH('str', 'reg_exp')

而不是使用 LIKE 使用的 % 语法,您应该使用正则表达式(详细语法定义here

于 2012-10-11T01:45:31.193 回答
13

BigQuery 标准 SQL 正式支持 LIKE - https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#comparison_operators

而且我认为它也适用于 Legacy SQL!

于 2016-07-21T00:28:55.727 回答
6

如果 str 匹配正则表达式,则 REGEXP_MATCH 返回 true。对于没有正则表达式的字符串匹配,使用 CONTAINS 而不是 REGEXP_MATCH。

https://developers.google.com/bigquery/docs/query-reference#stringfunctions

于 2013-04-28T19:33:11.803 回答
1

如果您知道如何使用 REGEXP_MATCH,它会很棒,但对于那些不确定是否有任何常用的特殊字符(例如“.”、“$”或“?”)的人来说。在查找字符串中,您可以使用LEFT('str', numeric_expr)RIGHT('str', numeric_expr)。即,如果您有一个名称列表并希望返回所有您将使用的 LIKE 'sa%' 的名称:

select name from list where LEFT(name,2)='sa';(其中 2 是 'sa' 的长度)

此外,如果您想说明一列的值与另一列的值在哪里,您可以将 2 换成LENGTH(column_with_lookup_strings)='sa'for =column_with_lookup_strings,使其看起来像这样:

select name from list where LEFT(name,LENGTH(column_with_lookup_strings))= column_with_lookup_strings;

https://cloud.google.com/bigquery/query-reference

于 2016-07-20T23:25:51.210 回答