zoukankan      html  css  js  c++  java
  • thinkphp中if使用以及concat的使用实例

    thinkphp中联合if和concat的使用方法
    "IF (pp.reason_name != '',concat( pp.reason_name, if(pp.remark != '',',',''), pp.remark  ),'' ) " => 'remark'
     if使用方法  IF(expr1,expr2,expr3)
    如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF()的返回值为数字值或字符串值,具体情况视其所在语境而定。
    "IF (pp.reason_name != '','显示表达式' ,'')" => '使用别名'
    
    
    concat使用方法
    CONCAT()函数用于将多个字符串连接成一个字符串
    例子

    mysql> SELECT CONCAT(’My’, ‘S’, ‘QL’);

    -> ‘MySQL’

    concat( pp.reason_name, if(pp.remark != '',',',''), pp.remark  )
    查询sql语句
    Db::name('spu_info')->alias('pi')
                ->leftJoin('spu p', 'p.spu = pi.spu')
                ->leftJoin('sku k', 'k.spu = pi.spu')
                ->leftJoin('supplier s', 's.id = k.supplier_id')
                ->leftJoin('product_process pp', 'pp.id = p.process_id and pp.spu = p.spu')
                ->LeftJoin('spu_sub ss', 'ss.spu = pi.spu')
    ->field([ "IF (pp.reason_name != '',concat( pp.reason_name, if(pp.remark != '',',',''), pp.remark ),'' ) " => 'remark', 'pi.count', 'pi.is_copy'])->group('pi.spu') ->paginate( $pagesize, false, ['query' => Request::param()] )->toArray();

    连接if 与concat使用实例

    case is_stop when '1' then '停用' else '在用' end is_stop
     Db::name("dictionary")
                ->field("id,name,name_en,is_stop status,case is_stop when '1' then '停用' else '在用' end is_stop,create_at,memo,num")
                ->where("pid", 0)
                // ->buildSql();
                ->select()
                ->toArray();

    case 与 when 联合使用

    判断年龄天数

    # when 表达式中可以使用 and 连接条件
    SELECT
        NAME '英雄',
        age '年龄',
        CASE
            WHEN age < 18 THEN
                '少年'
            WHEN age < 30 THEN
                '青年'
            WHEN age >= 30
            AND age < 50 THEN
                '中年'
            ELSE
                '老年'
        END '状态'
    FROM
        user_info;

     if 查询sql 

    SELECT DISTINCT
        `pa`.`email` AS `paypal邮箱`,
        `ptl`.`transaction_updated_date` AS `时间日期`,
        `ptl`.`transaction_id` AS `交易号`,
        `ptl`.`paypal_reference_id` AS `参考交易号`,
        `ptl`.`transaction_event_code` AS `类型`,
        `ptl`.`transaction_status` AS `状态`,
        `ptl`.`currency_code` AS `币种`,
        ( ptl.transaction_amount + ptl.fee_amount ) AS `总额`,
        `ptl`.`transaction_amount` AS `费用`,
        `ptl`.`fee_amount` AS `净值`,
        `pa`.`email` AS `收件人邮箱`,
        `ptl`.`transaction_subject` AS `物品名称`,
        `ptl`.`available_balance` AS `余额`,
    IF
        ( ptl.transaction_amount > 0 , '贷记', '借记') AS `引起余额变动` 
    FROM
        `paypal_transaction_list` AS `ptl`
        LEFT JOIN `paypal_transaction_detail` AS `ptd` ON `ptl`.`transaction_id` = `ptd`.`transaction_id`
        LEFT JOIN `paypal_account` AS `pa` ON `pa`.`paypal_account` = `ptl`.`account_number` 
    WHERE
        `pa`.`id` IN ( 109 ) 
        AND `ptl`.`transaction_updated_date` BETWEEN '2021-01-01 00:00:00' 
        AND '2021-02-01 00:00:00' 
    ORDER BY
        `ptl`.`id` ASC,
        `ptl`.`transaction_updated_date` ASC

     case  when使用实例

    SELECT DISTINCT
        `pa`.`email` AS `paypal邮箱`,
        `ptl`.`transaction_updated_date` AS `时间日期`,
        `ptl`.`transaction_id` AS `交易号`,
        `ptl`.`paypal_reference_id` AS `参考交易号`,
        `ptl`.`transaction_event_code` AS `类型`,
        case `ptl`.`transaction_status` when 'D' then '拒绝交易' 
            when 'F' then '部分退款'
                when 'P' then '待付款'
                when 'S' then '交易完成'
                when 'V' then '退全款'
                else       '未知状态' end AS `状态`,
        `ptl`.`currency_code` AS `币种`,
        ( ptl.transaction_amount + ptl.fee_amount ) AS `总额`,
        `ptl`.`transaction_amount` AS `费用`,
        `ptl`.`fee_amount` AS `净值`,
        `pa`.`email` AS `收件人邮箱`,
        `ptl`.`transaction_subject` AS `物品名称`,
        `ptl`.`available_balance` AS `余额`,
    IF
        ( ptl.transaction_amount > 0 , '贷记', '借记') AS `引起余额变动` 
    FROM
        `paypal_transaction_list` AS `ptl`
        LEFT JOIN `paypal_transaction_detail` AS `ptd` ON `ptl`.`transaction_id` = `ptd`.`transaction_id`
        LEFT JOIN `paypal_account` AS `pa` ON `pa`.`paypal_account` = `ptl`.`account_number` 
    WHERE
    -- --     `pa`.`id` IN ( 109 ) 
    --     AND 
        `ptl`.`transaction_updated_date` BETWEEN '2021-01-01 00:00:00' 
        AND '2021-02-01 00:00:00' 
    ORDER BY
        `ptl`.`id` ASC,
        `ptl`.`transaction_updated_date` ASC
  • 相关阅读:
    百度地图代码API
    3层下拉列表
    stl+数论——1247D
    数论+乱搞——cf181B
    思维+multiset优化——cf1249E
    线性基思想+贪心——cf1249C
    tarjan求强连通+缩点——cf1248E
    排序+模拟+优先队列——cf1248E
    栈+括号序列+暴力枚举——cf1248D1
    二分+贪心——cf1251D
  • 原文地址:https://www.cnblogs.com/kevin-yang123/p/14366828.html
Copyright © 2011-2022 走看看