gpt4 book ai didi

mysql - SQL,在字段值末尾具有数据格式的过滤模式

转载 作者:行者123 更新时间:2023-11-29 12:27:26 25 4
gpt4 key购买 nike

在 SQl 代码中如何过滤掉与以下模式匹配的值:

一些字符以及最后一个下划线('_')后面有一个格式为 DDMMYYY 的日期,

示例

values
-----
hello01122015
hello_2000
22_text_01022015
hello_again_22012015

结果:

22_text_01022015
hello_again_22012015

问候

最佳答案

您可以使用简单的正则表达式 '_[0-9]{8}$' 来检查实际日期是否有效:

-- with PostgreSQL
select *
from t
where values ~ '_[0-9]{8}$' and
to_char(to_date(right(values, 8), 'DDMMYYYY'), 'DDMMYYYY') = right(values, 8);

-- with MySQL
select *
from t
where `values` regexp '_[0-9]{8}$' and
str_to_date(right(`values`, 8), '%d%m%Y') is not null;

或者,您可以使用更强大的正则表达式,例如 '_(0[1-9]|[12][0-9]|3[01])(0[1-9]|1 [0-2])[0-9]{4}$',但这并不是万无一失的(这可以接受一些无效日期)。

SQLFiddle:对于 PostgreSQL ,对于 MySQL

注意:values是SQL中的保留字,如果可以的话,请避免作为列名。

关于mysql - SQL,在字段值末尾具有数据格式的过滤模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28101920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com