# #sql #google-bigquery
Вопрос:
Я пытаюсь обрезать свою символьную переменную, которая представляет собой простую строку, такую как John
или Lucy
. Обычно есть некоторое дополнительное пространство, и я хотел бы удалить эти дополнительные пробелы, используя TRIM
внутри WITH AS
предложения
WITH students AS (
SELECT
AZE,
EPI,
SYMB,
from schools.boston,
unnest(split(AZE, ',') || split(EPI, ',')) as SYMB)
пример входных данных
{
"id": 1,
"AZE": "english , chinese , french",
"EPI": "math, physics"
},
{
"id": 2,
"AZE": "",
"EPI": "computer science"
},
{
"id": 3,
"AZE": "taiwanese, russian, italian, turkish",
"EPI": "painting, drawing"
}
выходные СИМВОЛЬНЫЕ строки
id 1 - row 1:english
id 1 - row 2: chinese --> extra space to remove
id 1 - row 3: french --> extra space to remove
id 1 - row 4:math
id 1 - row 5: physics --> extra space to remove
Единственное место, где я смог использовать обрезку в своем запросе, было в SELECT
, но оно выполняется только TRIM
до процесса разделения. Каков был бы наилучший способ применить a TRIM
к моей SYMB
переменной?
WITH students AS (
SELECT
trim(AZE) as AZE,
trim(EPI) as EPI,
SYMB,
from schools.boston,
unnest(split(AZE, ',') || split(EPI, ',')) as SYMB)
Комментарии:
1. Можете ли вы предоставить некоторые примеры данных
2. Я просто добавил один пример, надеюсь, в этом есть смысл
Ответ №1:
SYMB
является результатом unnest()
, так что это то, что вы хотите обрезать:
select . . . , trim(symb)
Ответ №2:
with data as (
select 1 as id, 'english, chinese, french' as AZE, "math, physics" as EPI union all
select 2, "", "computer science" union all
select 3, "taiwanese, russian, italian, turkish", "painting, drawing"
),
split_and_concat as (
select
data.*, split(AZE, ',') || split(EPI, ',') as SYMB
from data
),
trimmed as (
select
split_and_concat.*, trim(item) as item
from split_and_concat,
unnest(SYMB) as item
)
select id, item
from trimmed