#google-bigquery
#google-bigquery
Вопрос:
Я использую оператор case и REGEXP_CONTAINS.Просто хотел посмотреть, даст ли следующий порядок мне правильный вывод.
(CASE
WHEN REGEXP_CONTAINS(AdSet, '(?i)BUS') THEN "BUS"
WHEN REGEXP_CONTAINS(AdSet, '(?i)BRA') THEN "BR"
WHEN REGEXP_CONTAINS(AdSet, '(?i)DIG') THEN "TR"
WHEN REGEXP_CONTAINS(AdSet, '(?i)INS') THEN "INS"
WHEN REGEXP_CONTAINS(AdSet, '(?i)INV') THEN "INV"
WHEN REGEXP_CONTAINS(AdSet, '(?i)SAV') THEN "SAV"
WHEN REGEXP_CONTAINS(AdSet, '(?i)TRA') THEN "TR"
WHEN REGEXP_CONTAINS(AdSet, '(?i)CC') THEN "CC"
WHEN REGEXP_CONTAINS(AdSet, '(?i)HL') THEN "HL"
WHEN REGEXP_CONTAINS(AdSet, '(?i)BR') THEN "BR"
END) as pf
Ответ №1:
Кажется правильным, если вы хотите выполнить поиск без учета регистра по ключевому слову, хотя в целом строковые функции более эффективны, чем функции РЕГУЛЯРНЫХ выражений, рассмотрите возможность:
REGEXP_CONTAINS(AdSet, '(?i)BUS') THEN "BUS"
=>
STRPOS(UPPER(AdSet), 'BUS') <> 0 THEN "BUS"