zoukankan      html  css  js  c++  java
  • 对MySQL查询结果进行替换

    IF函数

    IF(expr,v1,v2):如果表达式expr成立,那么返回v1,否则返回v2

    例如:在table1type字段存在值为-1的记录,现在对table1进行查询,如果该字段值为-1,就变为0,其他值不改变。

    SELECT IF(type=-1, 0, type) as type
    FROM table1;

    CASE语句

    CASE case_value
    WHEN when_value THEN
    statement_list
    ELSE
    statement_list
    END alias;
    对case_value进行判断,根据case_value满足的条件返回结果,并重命名为alias。

    SELECT
        CASE type
        WHEN 1 THEN
            '苹果'
        WHEN 2 THEN
            '香蕉'
        ELSE
            ''
        END type
    FROM table1;

    在TP链式查询中使用上述逻辑

      1. IF函数

        例如:在table1type字段存在值为-1的记录,现在对table1进行查询,如果该字段值为-1,就变为0,其他值不改变,并将结果存到table2

        //连接到数据库,假设连接为local
        //...
        //读取数据
        $reslut = $local
                    ->name('table1')    //使用table1
                    ->field('IF(type=-1, 0, type) as type')
                    ->select();
                    
        //向table2中插入数据
        //true参数:如果找到了相同的主键记录,就进行更新
        $local->name('table2')->insertAll($result, true);
      2. 当需要进行大量判断的时候,更推荐在代码中进行判断。在数据库进行判断,将会增大数据库服务器的压力。所以,上述例2,可以使用下面的方式。
        //连接到数据库,假设连接为local
        //...
        //读取数据
        $result = $local
                    ->name('table1')
                    ->field('type')
                    ->select();
        
        //处理数据
        foreach ($result as &$type) {
            switch ($type['type']) {
                case 1:
                    $type['type'] = '苹果';
                    break;
                case 2:
                    $type['type'] = '香蕉';
                    break;
                case 3:
                    $type['type'] = '';
                    break;
                default:
                    break;
            }
            unset($type);
        }
        
        //向table2中插入数据
        $local->name('table2')->insertAll($reslut, true);

        在上面的例子中,处理数据的时候,使用了引用传递&$type,如果不使用引用传递,$result是不会改变的。同时,还要注意的是,这里对每个遍历出来的$type进行了unset操作。这是很重要的一点,引用传递之后,要记得进行unset,将该变量与内存地址的绑定切断,这样才能在垃圾回收(GC)的时候,将其回收掉。

  • 相关阅读:
    MOOK学习
    寒假学习计划
    三位影响深刻的老师
    软工第三次作业-结对作业
    2018软工实践第二次作业
    2018软工实践第一次作业
    简单的自我介绍
    福大软工1816 · 第一次作业
    课程作业八
    课程作业七
  • 原文地址:https://www.cnblogs.com/mike-mei/p/14609569.html
Copyright © 2011-2022 走看看