将MySQL存储过程转换为PostgreSQL函数。如何处理这些replace()调用?

将MySQL存储过程转换为PostgreSQL函数。如何处理这些replace()调用?,sql,database,function,postgresql,plpgsql,Sql,Database,Function,Postgresql,Plpgsql,我刚刚将84个存储过程从MySQL转换成PostgreSQL函数。唯一没有弄清楚的是如何处理replace()调用。该函数在PostgreSQL中不存在。我相信以前一定有人这样做过。有什么建议吗 set @sql="CREATE TABLE `tbodefcall...(An UnGodly Amount of code that creates tables ...honeid_cd_idx (PhoneID,CallDate);"; set @sql = Replace(@sql,

我刚刚将84个存储过程从MySQL转换成PostgreSQL函数。唯一没有弄清楚的是如何处理replace()调用。该函数在PostgreSQL中不存在。我相信以前一定有人这样做过。有什么建议吗

set @sql="CREATE TABLE `tbodefcall...(An UnGodly Amount of code that creates tables ...honeid_cd_idx (PhoneID,CallDate);";
    set @sql =  Replace(@sql, 'tbodefcallback', concat('tbo_callback',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefcontact', concat('tbo_contact',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefscriptkvota', concat('tbo_scriptkvota',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefscript', concat('tbo_script',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodeftermcode', concat('tbo_termcode',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefprojectlogon', concat('tbo_projectlogon',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefcomment', concat('tbo_comment',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefvoicerecorder', concat('tbo_voicerecorder',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefquestiongroup', concat('tbo_questiongroup',_ProjectID) );
    set @sql =  Replace(@sql, 'tbodefquestion', concat('tbo_question',_ProjectID) );

谢谢你的帮助和建议。你们帮我完成了这个项目,真是太棒了

Postgresql确实具有
replace
功能,至少在8.4中是这样;您使用的是哪个版本

steve@steve@[local] =# select replace('create table tblfoo', 'tblfoo', 'tblfoo_44');
        replace         
------------------------
 create table tblfoo_44
(1 row)

实际上,您正在寻找“向上插入”命令。在PostgreSQL中,可以通过以下方式执行:

UPDATE ...;
IF NOT FOUND THEN -- UPDATE didn't touch anything
  INSERT ...;
END IF;

不…PostgreSQL没有replace()…我知道…我正在使用8.4…我正在尝试找出替代replace的方法。谢谢araqnid。。。到目前为止,我写的每一篇文章你都参与进来了,而且非常有帮助。PostgreSQL从7.3版开始就有了
replace
功能。如果对你不起作用,请提供详细信息。我找到了我认为不存在replace()的原因。MySQL具有REPLACE()函数,用于更新、删除和插入表中的行。我到处都在谈论这个函数。这在研究生中是不存在的。谢谢大家!这也是我最初的想法,但实际上我正在寻找PostgreSQL中已经存在的字符串替换函数replace()