PostgresSQL 10.6-函数子字符串和regexp_matches函数不存在

时间:2019-01-16 03:03:00

标签: sql postgresql

我已经安装了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会抛出这些错误?

1 个答案:

答案 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]