Function 通过pgsql函数检查字符串中的每个字符

Function 通过pgsql函数检查字符串中的每个字符,function,postgresql,Function,Postgresql,我想做一个函数来检查字符串的每个字符。 例如,让我们以单词ppppp ooossssttt为例,在这种情况下,如果相同字符重复超过2次,函数将返回警告。此处“p”重复5次。因此,该函数将返回一条警告消息。如果您能够在安装程序上安装plpython,我会这样做。然后,您可以简单地将此测试放在标准SQL函数的WHERE子句中。它是不可变的,因此只能调用一次,并且它总是返回True,因此不会影响SQL查询的结果。Postgres已经有了一些非常不稳定的python实现,但要么他们要么Enterpris

我想做一个函数来检查字符串的每个字符。
例如,让我们以单词ppppp ooossssttt为例,在这种情况下,如果相同字符重复超过2次,函数将返回警告。此处“p”重复5次。因此,该函数将返回一条警告消息。

如果您能够在安装程序上安装plpython,我会这样做。然后,您可以简单地将此测试放在标准SQL函数的WHERE子句中。它是不可变的,因此只能调用一次,并且它总是返回True,因此不会影响SQL查询的结果。Postgres已经有了一些非常不稳定的python实现,但要么他们要么EnterpriseDB在最新版本中进行了清理

CREATE OR REPLACE FUNCTION two_or_less(v text)
RETURNS BOOLEAN AS $$
    #If the string is two characters
    #or less, we can quit now.
    ct = len(v)
    if ct < 3: 
        return True

    import plpy
    warned = set()

    a,b,c = v[:3]
    for d in v[2:]:
        if a == b == c:
            if a not in warned:
                warned.add(a)
                plpy.warning('The character %r is repeated more than twice in a row.' % a)
        a,b,c = b,c,d
    return True

$$ LANGUAGE 'plpython3u' IMMUTABLE;

好的,到目前为止你都试了些什么?到目前为止,我已经将字符串分割成单个字符,但无法比较每个字符是否重复。我的查询是:选择regexp_split_to_arraystatename,从statecode=$1 order by statecode的状态转换为var_one;好的,您可以通过循环到数组中获得它,如果最后3个字符相同,则返回警告消息。。。