DB2 replace into实现

摘要:
$first){$values.=“,”;$keys.=“”,“;$mergeValues.=”,“”;$upStatement.=”,';}否则{$first=false;}$值=“{$val}”;$按键=$密钥;$mergeValues.=“merge.{$key}”;$upStatement.=“tab.{$key}=merge.{$key}”;}$first=真;$pkstr=“”;foreach($pksas$pk){if(!

最近进入到另一个项目, 数据库用的是DB2, 要实现MySQL中类似replace into的功能, 网上搜了下, 实现了一个类似功能的基础方法(PHP实现)

    public function replace($table, $arr, $pks){
        $values = '';
        $keys = '';
        $mergeValues = '';
        $upStatement = '';
        $first = true;
        foreach($arr as $key => $val){
            if (!$first){
                $values .= ',';
                $keys .= ',';
                $mergeValues .= ',';
                $upStatement .= ',';
            }
            else{
                $first = false;
            }
            $values .= "'{$val}'";
            $keys .= $key;
            $mergeValues .= "merge.{$key}";
            $upStatement .= "tab.{$key} = merge.{$key}";
        }
        $first = true;
        $pkstr = '';
        foreach($pks as $pk){
            if (!$first){
                $pkstr .= ' AND ';
            }
            else{
                $first = false;
            }
            $pkstr .= "tab.{$pk} = merge.{$pk}";
        }
        $sql = "MERGE INTO {$table} AS tab
        USING (VALUES
        ({$values})
        ) AS merge ({$keys})
        ON {$pkstr}
        WHEN MATCHED THEN
        UPDATE SET {$upStatement}
        WHEN NOT MATCHED THEN
        INSERT ({$keys})
        VALUES ({$mergeValues})";
        $this->db->query($sql);
    }

参考链接:

http://www.withdata.com/blog/db2/replace-update-or-insert-a-row-into-db2-table-merge-into.html

免责声明:文章转载自《DB2 replace into实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#中使用SendMessage在进程间传递数据的实例当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

DB2中有关like的使用心得。

DB2中的like的使用是有限制的,它不允许跟在它后面的是一个变量或者是字段,目前比较多的是:like '%测试%'这样,因此,在函数或者是存储过程中,就不能通过窗体一个参数给like来组成动态的条件。 如果真要在函数或者是存储过程中,去搜索某个字段是否拥有某个字符串在里面,可以使用locate。下面是locate的用法: locate(arg1,arg2...

DB2 错误码解析

DB2 错误代码大全——SQLSTATE 消息   SQLSTATE 消息本节列示 SQLSTATE 及其含义。SQLSTATE 是按类代码进行分组的;对于子代码,请参阅相应的表。 表 2. SQLSTATE 类代码 类 代码   含义 要获得子代码, 参阅... 00 完全成功完成 表 3 01 警告 表 4 02 无数据 表 5 07 动态 SQL ...

Oracle中merge into的使用

该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动。 1,insert 和update是可选的 2,UPDATE 和INSERT 后面可以跟WHERE 子句 3,在ON条件中可以使用常量来insert 所有的行到目标表中,...

js 正则匹配标签,过滤标签不保留内容和过滤标签保留内容,过滤标签的的属性

1、匹配双标签(包括内容),过滤标签,不保留内容。 var reg1 = /<span[^>]*>(.| )*</span>/gi; var str1 = '<span>我是被删除的</span>123123'; console.log(str1.replace(reg1, '')); 2、匹配标签...

利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

  在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析。本部分关注可以聚合、合并、重塑数据的方法。 1、层次化索引   层次化索引(hierarchical indexing)是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别。抽象点说,它使你能以低纬度形式处理高纬度数据。我们来看一个简单的栗子:创建一个Ser...

有相同键值的json合并为一个数组

今天我们分享的是,如何使用javascript来将两个含有相同键值的json合并为一个数组。 已知arr1的长度和arr2相等,arr1和arr2含有相同的键值id,使用js如何得到merge。 如下数据: var merge= [{id: 12,name: 20,title: 500}, {id: 13,name: 30,title: 666}]; 下面...