创建可以从表中查询的 Redshift UDF

问题描述 投票:0回答:1

我需要用 Redshift 中表中的值替换输入字符串

我在 SQL 中有这个函数,可以用表中的值替换输入字符串。我无法让它在 Redshift 中工作,因为它不接受 FROM 子句。想法?

CREATE FUNCTION [dbo].[udf_StringReplace](@str VARCHAR(200))
RETURNS VARCHAR(200)
WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT
AS
BEGIN
    SELECT @str = REPLACE(UPPER(@str),find,sub)
    FROM [dbo].[StringReplace]

    RETURN @str
END

我尝试对其进行转换,但并非没有运气,我想不出完成任务的方法。

amazon-web-services function replace amazon-redshift
1个回答
0
投票

我尚未测试此代码,但您可以创建一个替换字符串的 Python UDF。比如:

create or replace function substitute (in_string varchar)
  returns varchar
stable
as $$
  words = {'from_this': 'to_this', 'in': 'out', 'source': 'sink'}
  if in_string.lower() in words:
      return words[in_string.lower()]
  else:
      return in_string

$$ language plpythonu;

像这样使用它:

select name, substitute(name) from table
© www.soinside.com 2019 - 2024. All rights reserved.