我正在尝试运行一个简单的查询,在BigQuery中限制类似%,但LIKE不在语法中,那么如何实现呢?
答案 0 :(得分:12)
您可以使用REGEXP_MATCH函数(请参阅查询参考page): REGEXP_MATCH('str','reg_exp')
不应使用LIKE使用的%语法,而应使用正则表达式(详细语法定义here)
答案 1 :(得分:9)
在BigQuery Standard SQL中正式支持LIKE - https://cloud.google.com/bigquery/sql-reference/functions-and-operators#comparison-operators
我认为它也适用于旧版SQL!
答案 2 :(得分:5)
如果str与正则表达式匹配,则REGEXP_MATCH返回true。对于没有正则表达式的字符串匹配,请使用CONTAINS而不是REGEXP_MATCH。
https://developers.google.com/bigquery/docs/query-reference#stringfunctions
答案 3 :(得分:0)
REGEXP_MATCH非常棒,如果您知道如何使用它,但对于那些不确定不会有任何常用特殊字符的人来说,例如'。',&# 39; $'或'?'在查找字符串中,您可以使用LEFT('str', numeric_expr)
或RIGHT('str', numeric_expr)
。
也就是说,如果你有一个名单,并想要归还所有那些喜欢的名字,那就是' sa%'
你使用:
select name from list where LEFT(name,2)='sa';
(2为' sa')
此外,如果您想说一个列的值与其他列相似,则可以将LENGTH(column_with_lookup_strings)
的{2}和='sa'
换成=column_with_lookup_strings
,让它看起来像这样:
select name from list where LEFT(name,LENGTH(column_with_lookup_strings))= column_with_lookup_strings;