对于 BigQuery 标准 SQL
以下是简单的情况,假设您事先知道预期的最大分数长度(下例中为 3)
#standardSQL
WITH `project.dataset.your_table` AS (
SELECT 'Tim' name, '63 > 89 > 90' score UNION ALL
SELECT 'James', '67 > 44'
)
SELECT
name,
score[SAFE_OFFSET(0)] AS score_1,
score[SAFE_OFFSET(1)] AS score_2,
score[SAFE_OFFSET(2)] AS score_3
FROM (
SELECT name, SPLIT(score, ' > ') score
FROM `project.dataset.your_table`
)
结果
Row name score_1 score_2 score_3
1 Tim 63 89 90
2 James 67 44 null
当然,上述方法意味着-如果您有很多分数-例如 10 或 20 或更多-您将需要添加相应数量的额外行,如下所示
score[SAFE_OFFSET(20)] AS score_21
所以,从输出的角度来看,上面给出了你想要的东西
同时,以下对我来说更有意义,并且在大多数实际情况下更好,最优化:
#standardSQL
WITH `project.dataset.your_table` AS (
SELECT 'Tim' name, '63 > 89 > 90' score UNION ALL
SELECT 'James', '67 > 44'
)
SELECT name, score
FROM `project.dataset.your_table`, UNNEST(SPLIT(score, ' > ')) score
结果
Row name score
1 Tim 63
2 Tim 89
3 Tim 90
4 James 67
5 James 44