【问题标题】:Like : Wildcard ending with variable value in pgsql喜欢:通配符以 pgsql 中的变量值结尾
【发布时间】:2019-11-13 00:10:00
【问题描述】:

我已经像这样编写了我的 pgsql 块,我从该块的上部接收 var 的值:

    DO $$
declare
var integer ;
b integer;
k integer;
p integer;
m integer;
n varchar(100);
begin

k := null;
    var := (select
   count(child.relname) AS child

FROM pg_inherits
    JOIN pg_class parent            ON pg_inherits.inhparent = parent.oid
JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid
JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid  = parent.relnamespace
JOIN pg_namespace nmsp_child    ON nmsp_child.oid   = child.relnamespace
WHERE parent.relname='abc');


 while k = null loop

k := (select
   child.relname AS child

FROM pg_inherits
JOIN pg_class parent            ON pg_inherits.inhparent = parent.oid
JOIN pg_class child             ON pg_inherits.inhrelid   = child.oid
JOIN pg_namespace nmsp_parent   ON nmsp_parent.oid  = parent.relnamespace
JOIN pg_namespace nmsp_child    ON nmsp_child.oid   = child.relnamespace
   WHERE parent.relname='abc' and child.relname like '%',var);

  var := var + 1;

   end loop;

这不是完整的块。但是,从块中您可以理解我需要找出以变量名结尾的分区表(值)。但是,当我运行它时,出现以下错误:

 ERROR:  syntax error at or near ","
LINE 34: ...RE parent.relname='abc' and child.relname like '%',var);

我尝试使用双 %% 符号(一个用于通配符,另一个用于获取变量值,然后出现以下错误:

    ERROR:  syntax error at or near ","
 LINE 34: ...E parent.relname='abc' and child.relname like '%%',var);

如果有任何其他方法可以使用通配符访问 pgsql 变量值,请告诉我。

【问题讨论】:

    标签: postgresql partitioning database-partitioning


    【解决方案1】:

    你需要使用字符串连接:

    ... child.relname LIKE ('%' || var)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      相关资源
      最近更新 更多