如何编写一个基于查询从字符串中提取子字符串的postgresql函数

问题描述

我想基于查找表从字符串中提取子字符串。 就我而言,我有一个名为tld_list@H_502_2@的表,该表基本上包含可能的顶级域条目的列表。

我对Postgresl函数比较陌生,因此我不知道如何将这样复杂的逻辑组合在一起,因为我不了解语法。

这是用Python编写的等效代码,我想将其转换为psql

def extract_sld(query_or_answer: str,tld_list: list) -> typing.Optional[str]:
    lowered_query_or_answer = query_or_answer.lower()
    for tld in tld_list:
        if tld == lowered_query_or_answer:
            # the `query_or_answer` is itself a tld
            return None
        if lowered_query_or_answer.endswith("." + tld):
            tld_len = len(tld) + 1
            return ".".join([lowered_query_or_answer[:-tld_len].split(".")[-1],tld])
    return None
@H_502_2@

因此,基本上,我将条目传递给gateway.mydomain.com@H_502_2@之类的函数,它应返回第二级域,在这种情况下为mydomain.com@H_502_2@。

我需要采取的步骤:

  • 降低输入字符串
  • 通过tld_list@H_502_2@条目重复
  • 检查输入字符串是否以tld条目结尾
  • 如果输入字符串等于tld条目,则返回NULL@H_502_2@
  • 否则,如果输入字符串以tld条目结尾,则提取tld条目之后的子域,例如:tld = com@H_502_2@,input = gateway.mydomain.com@H_502_2@-> sld = mydomain.com@H_502_2@
  • 否则,如果在输入字符串中找不到单个tld@H_502_2@,则返回NULL@H_502_2@

有人可以帮我将我的Python代码转换为psql等效代码吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)