[英]How to extract a specific portion of a string in bigquery
我有一個看起來類似於此的字符串:
28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7
我想根據“-”拆分它,但也告訴它在 position 或指向進行拆分的位置。 我的目標是刪除最后兩個字符串
我想要的最終結果應該是這樣的:
28f1e5f7-47c6-4d67-bcbf-9e807c379076
我知道我可以拆分偏移量然后連接。 我想知道是否有更直接的方法,因為它需要我拆分 5 次然后連接 5 次?
你能試試這個查詢嗎?
with myTable as (
select 1 as id, "28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7" as sampleString
union all select 2 as id, "28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7-dhushkdha" as sampleString
)
SELECT id, sampleString,
(
SELECT STRING_AGG(samp, '-' ORDER BY index)
FROM UNNEST(SPLIT(sampleString, '-')) samp WITH OFFSET index
WHERE index BETWEEN 0 AND (select array_length(split(sampleString,'-')) - 3)
)
FROM myTable
此查詢將省略最后兩個值,因為它由“-”分隔
Output:
我在第二列中添加了另一個值,只是為了測試是否會刪除最后兩個值。
您也可以考慮使用INSTR()
INSTR(source_value, search_value[, position[, occurrence]])
WITH sample_data AS (
SELECT '28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7' str
)
SELECT SUBSTR(str, 1, INSTR(str, '-', -1, 2) - 1) -- drop the last two strings
FROM sample_data;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.