gpt4 book ai didi

regex - 在 PostgreSQL 9.3 中更改 varchar 列中的日期格式

转载 作者:行者123 更新时间:2023-11-29 13:49:02 25 4
gpt4 key购买 nike

我有一个带有信息表的 PostgreSQL 数据库,其中包含有关人员的评论。

一个例子是 X 先生,1953 年 18 月 12 日出生在 Y...

我想使用独特的 PostgreSQL 请求或方法将日期格式更改为 ISO 8601 (YYYY-MM-DD)

我知道如何检测数据库中的日期:'(\d{2})/(\d{2})/(\d{4})'

使用此模式替换的最佳方法是什么?

我考虑过将 regex_replace 与拆分混合,但它似乎太复杂了,我相信有更简单的方法。

如果有人有好的建议,我会采纳!

谢谢

最佳答案

假设您的输入中有 XX/XX/XXXX 类似日期的子字符串,它始终是一个日期。然后,您可以使用的是单个 REGEXP_REPLACE,其模式包含捕获组以及替换模式中相应的反向引用,按要求的顺序排列并使用所需的分隔符:

REGEXP_REPLACE(s, '(\d{2})/(\d{2})/(\d{4})', '\3-\2-\1', 'g')

注意:如果您需要将这些字符串作为整个单词进行匹配,则可以使用单词边界 \y 将整个模式括起来,'\y(\d{2})/(\d{2})/(\d{4})\y'\d{2} 匹配两位数字,\d{4} 匹配四位数字。 (...) 创建一个编号的捕获组(从左到右从 ID 1 开始),它们的内容用 \n 反向引用引用。 'g' 替换字符串中所有出现的地方。

online test :

CREATE TABLE table1
(s character varying)
;

INSERT INTO table1
(s)
VALUES
('Mr X, born the 18/12/1953 in Y...'),
('Mr Y, died the 18/12/2053 in Y...')
;
select REGEXP_REPLACE(s, '\y(\d+)/(\d+)/(\d+)\y', '\3-\2-\1', 'g') as Results from table1;

enter image description here

关于regex - 在 PostgreSQL 9.3 中更改 varchar 列中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43897096/

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