我已经安装了Windows上安装的PostgresSQL 10.6并使用DBeaver-我通过“ SELECT VERSION()”确认了版本。
由于某些原因,每当我尝试使用SUBSTRING函数时,都会收到以下错误消息:
SQL错误[42883]:错误:函数pg_catalog.substring(字符 变化,整数,字符变化,整数)
类似于REGEXP_MATCHES
SQL错误[42883]:错误:函数regexp_matches(字符不同, 文本,整数)不存在提示:没有函数与给定的匹配 名称和参数类型。您可能需要添加显式类型转换。
我认为我使用的语法与文档匹配,例如REGEXP_MATCHES(source_string, pattern, 1)
有什么想法为什么Postgres会抛出这些错误?
答案 0 :(得分:0)
我试图错误地使用这些功能,从而抛出“该功能不存在”。我想这意味着该函数确实存在,如果我想将其与尝试使用的参数类型一起使用。
REGEXP_MATCHES(source_string,pattern,1)我理解为不区分大小写的正则表达式匹配项(1)。正如尼克·巴恩斯(Nick Barnes)在评论中指出的那样,REGEXP_MATCHES使用了(文本,文本,文本)。
我正在缩短一个文本字段的长度,以检查它是否存在于另一列中-而不是对col2使用SUBSTRING,我使用了LEFT(col2,10),而我使用的是regexp_matches(regexp_match(col1,col2) )[1]