【问题标题】:How to implement "like" in BigQuery?如何在 BigQuery 中实现“喜欢”?
【发布时间】:2012-10-01 14:38:29
【问题描述】:

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

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果您知道如何使用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;

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 似乎 LIKE 运算符在其 Google Cloud 实施中受到限制。例如,我无法使用字符列表功能(使用括号)。官方文档只说明了 % 和 _ 的可能使用,这使得它的用例比 RegEx 少。
          猜你喜欢
          • 1970-01-01
          • 2011-11-04
          • 2021-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-28
          • 1970-01-01
          相关资源
          最近更新 更多