• 20231008工作心得:sql


    1.SQL语句里的if的嵌套使用

    if(product ='A' and brand_name ='B','C',if(product ='A' and brand_name !='B','D',product)) as product

    if(A,B,C)。SQL里if函数,如果条件A成立,就显示B的值,否则就显示C。

    这个代码的意思的:

    当该行数据product属性为A,且brand_name属性为B的时候,就用C来作为product列的值。

    否则,就进入第二个if判断,当该行数据product属性为A,且brand_name属性不为B的时候,就用D来作为product列的值。否则,就用它原来的product的值。

    其实就是3种情况,用if嵌套写出来了。当然,还可以继续嵌套下去。

    if(product ='A' and brand_name ='B','C',if(product ='A' and brand_name ='E','D',if(product ='A' and brand_name ='F','G',product))) as product

    2. sql语句一定先执行无误,再放到代码里。

    不然如果是因为多一个)或者少一个(引起的SQL语法错误,寻找起来是很难的。

    3.BeanUtils.batchTransform

    可以直接 以list形式批量拷贝。

    List personList = personRepository.findAll();
    List personDTOList =  BeanUtils.batchTransform(personDTO.class,personList)


    4.label.substring(label.lastIndexOf("-")+1);

    substring加lastIndexOf,就是截取自某个元素出现后的字符串。

    String a = "191-12-23";

    System.out.println(a.substring(a.lastIndexOf("-")));

    System.out.println(a.substring(a.lastIndexOf("-")+1));

    结果:

    -23
    23

    所以一般用的是第二种,可以截取"-"之后的字符串。

    5.尤其是在面对相似功能的接口时。思路要清晰。

    现在调用的是哪个接口,是在哪个环境,哪一行代码出的问题。不能模糊。

    6.这两种写法都可以避免SQL里的NULL

    SUM(IF(push_status = 1, 1, 0)) 
    IFNULL(SUM(CASE WHEN r.hangup = 'NORMAL_CLEARING' THEN 1 ELSE 0 END),0)。

    当没有满足的数据时候,也会有个0,而不会是Null。

  • 相关阅读:
    C# 串口通信简单示例
    什么情况下考虑分库分表
    【Java】Java对象的上转型对象与下转型
    mmdet-rfla调试经验
    Access-Control-Allow-Origin跨域问题,使用Nginx配置来解决
    鸿蒙入门05-真机运行“遥遥领先”
    nginx做负载均衡服务器,配置动静分离
    银河麒麟4.0.2安装带有opengl的Qt5.12.9
    区块链中的数据可用性层是什么?
    paddlenlp进行训练UIE-X相关问题
  • 原文地址:https://blog.csdn.net/tomorrow9813/article/details/133687020