Как извлечь из строки только буквенно-цифровые символы? (SQL Google BigQuery) - PullRequest
0 голосов
/ 17 июня 2019

Скажем, у меня есть столбец с названием merchants, содержащий следующие значения:

Al's Coffee  
Belinda & Mark Bakery  
Noodle Shop 38  

Как мне получить его для извлечения:

alscoffee  
belindamarkbakery  
noodleshop38  

До сих пор я использовал replace(lower(merchants), '&', '')для каждого отдельного символа, но есть ли способ избежать использования такого количества вложенных замен?

Ответы [ 4 ]

1 голос
/ 17 июня 2019

Как извлечь из строки только буквенно-цифровые символы?

Ниже для BigQuery Standard SQL

Вы также можете использовать \W - not word characters (≡ [^0-9A-Za-z_]), как в примере ниже

REGEXP_REPLACE(merchant, r'\W', '')   

Если обратиться к образцу данных из вашего вопроса

#standardSQL
WITH `project.dataset.table` AS (
  SELECT "Al's Coffee" merchant UNION ALL
  SELECT "Belinda & Mark Bakery" UNION ALL
  SELECT "Noodle Shop 38" 
)
SELECT REGEXP_REPLACE(merchant, r'\W', '') cleaned_merchant
FROM `project.dataset.table`   

результат

Row cleaned_merchant     
1   AlsCoffee    
2   BelindaMarkBakery    
3   NoodleShop38       

Очевидно, что если вам нужен результат в нижнем регистре - добавьте соответствующую функцию - например,

SELECT REGEXP_REPLACE(LOWER(merchant), r'\W', '') cleaned_merchant
FROM `project.dataset.table` 
0 голосов
/ 18 июня 2019

, что работало для меня в BigQuery, было

SELECT regexp_replace(lower(Al's Coffee), "[^0-9a-zA-z]+","")

это вернул бы alscoffee

0 голосов
/ 17 июня 2019

В BigQuery вы можете использовать regexp_replace():

select regexp_replace(merchant, '[^a-zA-Z0-9]', '')

Это означает, что все, что не является символом или цифрой, заменяется пустой строкой.Если вы хотите сохранить больше символов, добавьте их в класс символов.

0 голосов
/ 17 июня 2019

У меня есть решение для вас !!

ВЫБРАТЬ купцы AS Original, НИЖНЯЯ (купцы) КАК Строчная FROM TableName;

В нижнем регистре отображаются нужные результаты, как вы хотите !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...