postgresql - Postgres 用户定义函数从字符串中删除子字符串
问题描述
我正在运行 PostgreSQL 9.6,我希望创建一个用户定义的函数,该函数将删除 2 个不同字符之间的文本。我在网上搜索了高低都无济于事。考虑下面的演示。
CREATE FUNCTION remove_between(
_original_string
, _start_delete_character text
, _end_delete_character text
) RETURNS TEXT language sql AS
$$
...
$$
SELECT remove_between('origi<stuff and junk>nal str<junk>ing','<','>')
产量:原始字符串
我被卡住的地方是我可以找到整个字符串的长度以及第一个<
和最后一个的位置,>
但是它会起飞太多。
解决方案
以下功能将完成工作。特别感谢 Abelisto 在评论中提供的帮助。
CREATE FUNCTION remove_between(
_original_string text
, _start_delete_character text
, _end_delete_character text
) RETURNS text language sql AS
$$
/*
==================================================
Author: dvandenbosch
Created At: 7/14/2020
Where Used:
Usage: SELECT remove_between('origi<stuff and junk>nal str<junk>ing','<','>')
==================================================
*/
select regexp_replace(_original_string,_start_delete_character || '[^>]*' || _end_delete_character, '', 'g');
$$;
推荐阅读
- r - 将列表名称附加到 data.frames 的列中
- javascript - 让我返回更相关的音乐的查询
- python - 需要在python中生成csv输出如下
- angular - 包装或扩展 angular-material 组件,允许将未知属性传递给子组件
- android - AutoCompleteTextView 单击侦听器不起作用
- ionic-framework - 我可以在没有 MacOS 的情况下将 TestFlight 与 Ionic 3 一起使用吗?
- angular - 如何在 Angular 2+ 日历的周视图中实现点击事件?
- javascript - 在更改时使下拉列表值等于其他下拉列表的值
- c# - c#rest api绑定到0.0.0.0
- node.js - Node.js Request() 在一个特定域的页面上失败