簡體   English   中英

SQL RegEx:如何從此字符串中提取日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM