regex 如何使用正则表达式修改SQL查询?[已关闭]

56lgkhnf  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(87)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

上个月关门了。
Improve this question
我有一系列这样的疑问:

SELECT  hire_date, TO_CHAR(ADD_MONTHS(hire_date, -1), 'DD-MON-YYYY') "Previous month",
TO_CHAR(ADD_MONTHS(hire_date, 1), 'DD-MON-YYYY') "Next month"
FROM employees 
WHERE first_name = 'Lex';

我应该像这样修改add_months()函数:
SELECT hire_date, TO_CHAR(LAST_DAY(ADD_MONTHS(hire_date, -1)), 'DD-MON-YYYY') "Previous month", TO_CHAR(ADD_MONTHS(hire_date, 1), 'DD-MON-YYYY') "Next month" FROM employees WHERE first_name = 'Lex';我需要一个正则表达式,它自动为数据库中的所有查询
SELECT hire_date, TO_CHAR(LAST_DAY(ADD_MONTHS(hire_date, -1)), 'DD-MON-YYYY') "Previous month", TO_CHAR(ADD_MONTHS(hire_date, 1), 'DD-MON-YYYY') "Next month" FROM employees WHERE first_name = 'Lex';

vatpfxk5

vatpfxk51#

我相信你正在寻找的是regexp_replace-我会给你一个给予如何处理它的例子,但一定要查看文档来理解它并为你的用例进行微调:Pattern Matching in PostgreSQL

UPDATE employees
SET hire_date = REGEXP_REPLACE(
    hire_date,
    E'(TO_CHAR\\()ADD_MONTHS\\(([^)]+), -1\\), ''DD-MON-YYYY''(\\))',
    E'\\1LAST_DAY(ADD_MONTHS(\\2, -1)), ''DD-MON-YYYY''\\3',
    'g'
)
WHERE hire_date LIKE E'%TO_CHAR(ADD_MONTHS%';

相关问题