Вывод запроса отличается в разных запросах - PullRequest
0 голосов
/ 11 ноября 2019
SELECT COUNT(*) c
FROM `bigquery-public-data.hacker_news.full` 
WHERE REGEXP_CONTAINS(text, '(?i)(bigquery|big query|google cloud)') 
-- Query result - 7669

Но если мы сделаем индивидуально, как показано ниже, я получу другой счет:

SELECT COUNT(*) c
FROM `bigquery-public-data.hacker_news.full` 
WHERE REGEXP_CONTAINS(text, '(?i)(bigquery)') 
-- 1560
SELECT COUNT(*) c
FROM `bigquery-public-data.hacker_news.full` 
WHERE REGEXP_CONTAINS(text, '(?i)(big query)') 
-- 127
SELECT COUNT(*) c
FROM `bigquery-public-data.hacker_news.full` 
WHERE REGEXP_CONTAINS(text, '(?i)(google cloud)') 
-- 6222

Total = 7909, но если мы сделаем запрос вместе, мы получим 7669.

Если я где-то совершаю ошибку, пожалуйста, исправьте меня.

Заранее спасибо.

1 Ответ

0 голосов
/ 11 ноября 2019

Посмотрите на этот запрос:

WITH data AS (SELECT 'abc' text) 

SELECT COUNT(*) c
FROM data
WHERE REGEXP_CONTAINS(text, '(?i)(a|b|c)') 

Результат равен 1.

И если я попытаюсь:

WITH data AS (SELECT 'abc' text) 

SELECT COUNT(*) c
FROM data
WHERE REGEXP_CONTAINS(text, '(?i)(a)') 

То же самое, если я попробую просто«а», просто «б» или просто «с». Если каждый из них дает мне 1, почему я не получаю 3 в результате, когда я запрашиваю REGEXP_CONTAINS(text, '(?i)(a|b|c)')?

, потому что один текст может содержать несколько подстрок, которые вы ищете, таким образом считая как один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...