sql - SQL RegEx:如何从此字符串中提取日期
问题描述
如何使用 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”
谢谢
解决方案
下面是 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
推荐阅读
- flask-sqlalchemy - Deleting the matching rows from the table
- elasticsearch - Elasticsearch 中的小写文件名字符串
- django - 如何将类结果保存在 django 缓存中并在其他类中使用
- pdfclown - PDFClown MarkerContent 只给出前两个 ContentObjects
- android - 如何从“com.sec.android.gallary3d”文件夹中读取数据?
- .htaccess - 如何通过 .htaccess 中的 URL 长度设置 FallbackResource?
- node.js - Swagger UI Express - 无法获取 /docs/
- python - 如何将 UI 添加到我的 Django REST API 中?
- java - Tomcat 8.5 重写 Valve 以将 root 请求重定向到特定的 webapp
- firebase - 我们应该使用 Firebase 还是 Google Compute Engine?