postgres函数从列中的数据中删除数字

postgres function to remove numbers from data in columns

我找到了关于如何在 MSSQL 中创建函数以从 varchar 列中删除数值的 Whosebug 答案,如果可能,我需要将其翻译成 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;