[英]SQL RegEx: How to extract the date from this string
如何使用 RegEx 從此字符串中提取2018.11.06
“NL-SAS-US-2018.11.06.Nov 6 2018 - SL 電子郵件 - 美國時事通訊”
字符可以以各種方式和長度改變,但在字符串中的某個點總會有一個格式為 YYYY.MM.DD 的日期
這是我目前的解決方案,但我認為有更好的方法嗎?
SELECT *,
REGEXP_EXTRACT(email_name, '([0-9]+)') AS email_name
FROM
(SELECT REPLACE(email_name, ".", "") AS email_name
FROM emailsTable)
這給了我“20181106”
謝謝
將“第四只鳥”的評論變成完整的答案:
SELECT REGEXP_REPLACE(
"NL-SAS-US-2018.11.06.Nov 6 2018 - SL Email - US Newsletter"
, r'.*\b(\d{4})\.(\d{2})\.(\d{2})\b.*'
, r'\1\2\3')
20181106
下面是 BigQuery 標准 SQL 的示例
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'NL-SAS-US-2018.11.06.Nov 6 2018 - SL Email - US Newsletter' email_name
)
SELECT REGEXP_EXTRACT(email_name, r'([12]\d{3}.(?:0[1-9]|1[0-2]).(?:0[1-9]|[12]\d|3[01]))') email_date
FROM `project.dataset.table`
結果
Row email_date
1 2018.11.06
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.