Заявление по делу BIGQUERY с подстановочным знаком

# #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