【问题标题】:Google BigQuery case insensitive matchGoogle BigQuery 不区分大小写匹配
【发布时间】:2017-11-14 14:06:11
【问题描述】:

我将如何运行以下查询,就像我再次运行 mysql 一样:

SELECT * FROM [integrated-myth-15.testing_data_100k]
WHERE title='down in la'

现在,如果我有一个完美的区分大小写的字符串匹配,它将匹配,但是对于“down in la”,我将如何做到不区分大小写?我正在通过 Web 控制台工作。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    执行此操作的标准方法是在输入字符串上使用LOWERUPPER,例如:

    #legacySQL
    SELECT * FROM [integrated-myth-15.testing_data_100k]
    WHERE LOWER(title) = 'down in la';
    

    或者:

    #standardSQL
    SELECT * FROM `integrated-myth-15.testing_data_100k`
    WHERE LOWER(title) = 'down in la';
    

    【讨论】:

    • 谢谢——出于好奇,为什么它默认为区分大小写的匹配,而不是正常的 SQL 不区分大小写的匹配,除非另有指定匹配?
    • MySQL 尽管被广泛使用,但并不能很好地代表 SQL 标准。例如,PostgreSQL 也不默认使用不区分大小写的匹配。
    【解决方案2】:

    最好的方法是在查询末尾附加“IGNORE CASE”。

    SELECT * FROM [integrated-myth-15.testing_data_100k] WHERE title='down in la' IGNORE CASE
    

    注意:这仅适用于旧版 SQL

    如官方documentations所说:

    字符串函数对字符串数据进行操作。字符串常量必须用单引号或双引号括起来。默认情况下,字符串函数区分大小写。您可以将 IGNORE CASE 附加到查询的末尾以启用不区分大小写的匹配。 IGNORE CASE 仅适用于 ASCII 字符并且仅适用于查询的顶层。

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 2012-12-03
      • 2014-09-07
      相关资源
      最近更新 更多