Как заменить только полную строку вместо подстроки в BigQuery SQL? - PullRequest
0 голосов
/ 30 августа 2018

Я использую функцию REPLACE, но она нацелена только на подстроки, а не на полную строку. Я хотел бы заменить эти ключи этими значениями:

key   | value
--------------
'b'   | 'blue'
'bl'  | 'blue'
'BLUE'| 'blue'

и мой стол выглядит так:

color | age 
------------
'b'   | 17
'blue'| 10
'BLUE'| 10

и когда я делаю:

SELECT
color,
age, 
REPLACE(REPLACE(REPLACE(color, 'b', 'blue'), 'bl', 'blue'), 'BLUE', 'blue) as color_cleaned
FROM my_table

Я получаю таблицу, которая выглядит следующим образом:

color | age | color_cleaned
---------------------------
'b'   | 17  | 'blue'
'blue'| 10  | 'bluelue'
'BLUE'| 10  | 'bluelue'

Как сделать так, чтобы REPLACE совпадал только с полной строкой, а не с подстрокой?

1 Ответ

0 голосов
/ 30 августа 2018

Ниже приведен пример для BigQuery Standard SQL

#standardSQL
WITH `project.dataset.map` AS (
  SELECT 'b' key, 'blue' value UNION ALL
  SELECT 'bl', 'blue' UNION ALL
  SELECT 'BLUE', 'blue'
), `project.dataset.my_table` AS (
  SELECT 'b' color, 17 age UNION ALL
  SELECT 'blue' , 10 UNION ALL
  SELECT 'BLUE' , 10 
)
SELECT color, age, value AS color_cleaned
FROM `project.dataset.my_table`
JOIN `project.dataset.map`
ON LOWER(key) = LOWER(color)

с результатом как

Row     color   age     color_cleaned    
1       b       17      blue     
2       blue    10      blue     
3       BLUE    10      blue     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...