PostgreSQL - 正则表达式 - SQL状态:42601语法错误

时间:2013-12-02 11:20:57

标签: sql regex postgresql

我正在尝试创建包含“Messdaten”字样的表格。没有〜“Messdaten”部分,代码运行良好,但每当我添加〜“Messdaten”时它抛出SQL State:42601 sytax错误。你知道代码有什么问题吗?它的postgresql 9.2。

DECLARE
tbl_arr varchar[] := array['Messdaten2','dumptable'];
i varchar;
BEGIN
FOREACH i IN Array tbl_arr
LOOP
EXECUTE format('CREATE TABLE %I AS SELECT * FROM %I ~ "Messdaten"','backup_'||i,i);
END LOOP;
END;

1 个答案:

答案 0 :(得分:1)

代码正在尝试这样做:

CREATE TABLE Messdaten2 AS SELECT * FROM Messdaten2 ~ "Messdaten"

这是不正确的,因为Messadaten2是表名而不是表达式的成员。

相反,将正则表达式检查放在format函数的第一个参数字符串之外:

IF i ~ 'Messdaten' THEN -- Do the regular expresssion test here
   EXECUTE format('CREATE TABLE %I AS SELECT * FROM %I','backup_'||i,i);
END IF;