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

五月四周技术复盘

作者: 剑道_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