我有一個字符串框看起來像這樣在谷歌的BigQuery:分裂
S,0,2B3,8,C2 B3 00 00 00 00 03 DE
小號,0,3FA,6,00 E0 A5 04 00 0B
S,0,440,8 80 40 4E 00 A5 47 00 64
S,0,450,8,89 50 01 12 01 19 01 B3
S,0,4B0,8,80 B0 4E A5 00 43 00 64
我的目標是提取最後的8個字節(例如80 40 4E A5 00 47 00 64 )。可能只有那些以83和84開頭的。 我沒有得到它與分裂,修剪,包含或regexp_extract工作。 如果有人能幫助我,我會很開心。 問候
/編輯 謝謝都非常爲您的解決方案!這有助於很多。
#standardSQL
SELECT
*
FROM (
SELECT
timestamp,
REGEXP_EXTRACT(CAN_Frame, r', ([^,]+)$') AS bytes_string,
FROM_HEX(REPLACE(REGEXP_EXTRACT(CAN_Frame, r', ([^,]+)$'), ' ', '')) AS bytes
FROM `data.source`
)
WHERE SUBSTR(bytes, 1, 1) IN (b'\x83', b'\x84')
ORDER BY timestamp DESC
LIMIT 8000
給我
行時間戳bytes_string字節
1 2017年9月29日14時31分02秒84 UTC 10 00 25 00 21 00 4F hBAAJQAhAE8 =
2 2017-09-29 14:30:42 UTC 83 80 00 01 00 03 00 0D g4AAAQADAA0 =
3 2017-09-29 14:30:40 UTC 84 B2 00 27 00 08 00 03 hLIAJwAIAAM =
#standardSQL
SELECT
timestamp,
TRIM(SPLIT(CAN_Frame)[OFFSET(4)]) AS bytes
FROM
`data.source`
WHERE
LENGTH(CAN_Frame) > 1 and
SUBSTR(TRIM(SPLIT(CAN_Frame)[OFFSET(4)]),1,2) IN ('83', '84')
ORDER BY
timestamp DESC
LIMIT
8000
給我
行時間戳字節
1 2017年9月29日14時31分02秒84 UTC 10 00 25 00 21 00 4F
2 2017-09-29 14:30:42 UTC 83 80 00 01 00 03 00 0D
3 2017年9月29日14時30分四十〇秒UTC 84 00 B2 27 00 08 00 03
是有可能獲得從僅與83開始,獲得第四的bytes_string第六和第七字節和從第84個字節開始的第5個字節和從第83個字節開始的第8個字節以及從第84個字符串開始的第三個字節進行進一步計算?
最好的問候
scotti - 這不是如何stackoverflow worrk!你問問題 - 我們回答 - 你接受/投票等,如果你有新的問題 - 你不更新現有的問題 - 你只是問新的問題。這不是一個我們共同處理您的項目的論壇 - 這是問答網站。所以,如果你會問新的問題 - 我會很樂意回答。同時 - 正如你所說的,兩個答案都是有用的和有幫助的 - 挑選一個並接受。歡迎來到StackOverflow:o)當有人回答你的問題時,你可以檢查該怎麼做 - stackoverflow.com/help/someone-answers。 –
感謝您的建議,併爲我的錯誤感到抱歉。我會把它放在心上(並提出很多新問題) – scotti
沒問題。繼續詢問是否仍然需要:o) –