# #sql #google-bigquery
Вопрос:
Как написать заявление по ДЕЛУ с подстановочным знаком в столбце
В моем столбце Ver есть значения Factual,Tableau021, Tableau022
Нижеприведенное не работает, также как и любое другое обходное решение, если CASE не является правильным утверждением
CASE WHEN Ver = 'Tableau*' THEN 'get'
WHEN Ver = 'Factual' THEN 'Fact'
ELSE ''
END as Ver,
Ответ №1:
В SQL * — это просто еще один символ. Если вы хотите использовать его в качестве подстановочного выражения, вы должны использовать LIKE и заменить звездочку(*) символом процента (%), как это:
with example_data as (
select "Tableau2" as Ver UNION ALL
select "test123" as Ver UNION ALL
select "Factual" as Ver
)
select Ver as old_ver,
CASE WHEN Ver like 'Tableau%' THEN 'get'
WHEN Ver = 'Factual' THEN 'Fact'
ELSE ''
END as Ver,
from example_data
Это возвращает:
old_ver | Ver |
---|---|
Таблица 2 | получить |
тест123 | «(пустая строка) |
Фактический | Факт |
Комментарии:
1. Спасибо…Сработало идеально
Ответ №2:
В случае наличия более двух значений поиска — оператор CASE может стать слишком подробным и сложным в управлении. В таких случаях рассмотрите следующий вариант
with example_data as (
select 'Tableau2' Ver union all
select 'test123' union all
select 'Factual'
), search_values as (
select 'Tableau%' value, 'get' result union all
select 'Factual', 'Fact'
)
select *, (
select result from search_values
where Ver like value limit 1
) result
from example_data