Для BigQuery Legacy SQL
В SELECT
списке операторов вы можете использовать
SELECT REGEXP_EXTRACT(CustomTargeting, r'(?:^|;)u=(\d*)')
В WHERE
предложении - вы можете использовать
WHERE REGEXP_MATCH(CustomTargeting, r'(?:^|;)u=(\d*)')
Итак, ваш запрос может выглядеть следующим образом:
#legacySQL
SELECT CustomTargeting, REGEXP_EXTRACT(CustomTargeting, r'(?:^|;)u=(\d*)')
FROM [project:dataset.impressions_4213_20181112]
WHERE REGEXP_MATCH(CustomTargeting, r'(?:^|;)u=(\d*)')
Для BigQuery Standard SQL
То же для SELECT
Но отличается для WHERE
- WHERE REGEXP_CONTAINS(CustomTargeting, r'(?:^|;)u=(\d*)')
#standardSQL
SELECT CustomTargeting, REGEXP_EXTRACT(CustomTargeting, r'(?:^|;)u=(\d*)')
FROM `project.dataset.impressions_4213_20181112`
WHERE REGEXP_CONTAINS(CustomTargeting, r'(?:^|;)u=(\d*)')
Обновление - по адресу, указанному в примере данных:
Регулярное выражение обновлено с r'^u=(\d*)')
до r'(?:^|;)u=(\d*)')
- надеюсь, оно самоописательно, но если нет- поиск совпадений производится в начале строки или после ;