美文网首页
五月四周技术复盘

五月四周技术复盘

作者: 剑道_7ffc | 来源:发表于2020-06-01 14:48 被阅读0次

    sql的null的注意之处

    null不支持大小或相等比较

    null表示未知,未知不能等于未知,所以使用比较操作符和null值比较是没有意义的。

    select * from users where deleted_at = null;
    – result: 0 rows
    

    若想比较,判断是否为null,则使用is null或is not null;
    若想比较,两个列的值是否相等,则使用is distinct from

    SELECT *
    FROM test
    WHERE id1 IS DISTINCT FROM id2;
    
    image.png

    not in和null

    sql编译器会把not in转化为!=和and的组合。

    SELECT * FROM test WHERE id1 NOT IN(2,NULL);
    

    转化为

    SELECT * FROM test WHERE id1 != 2 AND id1 != NULL;
    

    任何值和null进行and操作是null,即没有条件,所以当not in有null,则查不出来数据。

    排序和null

    null被认为是最大的,所以当降序排序时,排在最前面。

    被 0 除

    通过nullif优雅的解决除数为0的情况,用法是若相等则返回null,若不相等,则为一个表达式的值。

    SELECT 1/NULLIF(1,0),1/NULLIF(0,0);
    
    image.png

    字符串和null

    null和任何值拼接都为null

    SELECT NULL || '1','1' || NULL;
    
    image.png

    postgresql中的关键词

    关键词是postgresql内部使用,类似于java语言的关键词。如name我们不能使用。所有的关键词请查看这个链接: http://www.postgres.cn/docs/9.3/sql-keywords-appendix.html

    SELECT id1 NAME FROM test;
    
    image.png

    对象复制保存

    当根据源医院的目录授权给目的医院,组成目的采购目录时,不要直接在源目录上进行修改,而需要重新创建一个授权目录,原因是若漏修改一个,插入时也不会报错如我忘记插入授权状态,db不会报错,排查起来很麻烦。

    BaseAuthorizeMaterial saveMaterials = item.getBaseAuthorizeMaterial();--很容易犯错,应该创建一个BaseAuthorizeMaterial目录
    

    相关文章

      网友评论

          本文标题:五月四周技术复盘

          本文链接:https://www.haomeiwen.com/subject/jnewahtx.html