繁体   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