postgresql - postgres 函数从列中的数据中删除数字
问题描述
我找到了关于如何在 MSSQL 中创建函数以从 varchar 列中删除数值的 stackoverflow 答案,如果可能,我需要将其转换为 Postgres。这可能与成为一个函数有关,因为我需要在几个不同的数据库中多次使用它。
我已尽力转换 MSSQL 版本,但仍然无法正常工作,有人可以帮助填补空白吗?我根本不是数据库专家,谢谢!
CREATE Function public.RemoveNumericCharacters(Temp VarChar(1000))
Returns VarChar(1000)
AS $$
Declare NumRange varchar(50) = '%[0-9]%';
While PatIndex(@NumRange, Temp) > 0
Set Temp = Stuff(Temp, PatIndex(@NumRange, Temp), 1, '')
Return Temp
End
$$
LANGUAGE SQL;
对于更多的上下文 - 我需要这个列是一个电子邮件列,因此它需要将例如 testuser345@hotmail.com 转换为 testuser@hotmail.com。
解决方案
不需要您自己的功能,这可以使用来实现regexp_replace()
select regexp_replace('testuser345@hotmail.com', '[0-9]+', 'g')
显然你可以把它放到一个函数中:
CREATE Function public.removenumericcharacters(p_input text)
returns text
AS $$
select regexp_replace(p_input, '[0-9]+', 'g');
$$
LANGUAGE SQL
immutable;
推荐阅读
- matlab - 使用 Matlab 在两个 y 轴图表中对齐 y 原点
- php - PHP 数组 - 删除其他反转值
- docker - Centos7 上的 Docker:连接被拒绝
- http - 加密电子邮件 VS SSL 数据传输:哪个更好?
- ios - 情节提要更改未保存
- python - Mplot3d - 无法通过 ax.set_label() 签署轴
- azure-pipelines - 在 vsts 上显示 Newman 的测试结果
- c# - 'ExecuteNonQuery:CommandText 属性尚未初始化'
- sql - PL/SQL 到 T-SQL 转换错误
- google-app-maker - Calculated_SQL 表 - 搜索