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