我想创建一个函数来检查字符串的每个字符。 例如,让我们来一个单词" pppppoooossssttt",在这种情况下,如果相同的字符重复超过2次,该函数将返回警告。这里' p'重复5次。因此该函数将返回一条警告消息。
答案 0 :(得分:0)
如果你能够在你的设置上安装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;