"空值"是对null值的中文叫法,两者同指一个东西。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了文圣免费建站欢迎大家使用!
我想楼主是想弄清楚null(空值)与零长度字符串''(或称为空字符串)之间的区别。
在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型,存储"零长度字符串"是要占用物理磁盘空间的;
而null值其数据类型是未知的,它不会占用物理磁盘空间。
在不存在约束限制的情况我们可以将Null值插入任何数据类型的字段里,而零长度字符串''只能插入到字符型数据类型字段中,插入其它类型字段会报错。
我们通过实测看看null(空值)与零长度字符串''(或称为空字符长)之间的区别:
1)输出所有的记录
select * from students;
注意:此例输出源表中的全部记录,含null(空值)和零长度字符串''.
2)输出电话为Null(空值)的记录
select * from students where phone is null;
注意:此例只输出含Null(空值)的记录
3)输出电话为零长度字符串的记录
select * from students where phone='';
注意:此例只输出含零长度字符串的记录。
4)输出电话不是零长度字符串的记录
select * from students where phone'';
注意:此例MySQL的处理方式有些特别,连含Null值得记录也排除掉了,这与MSSQL的处理方式有点不一致。
5)输出电话不为空的记录
select * from students where phone is not null;
注意:此例只要不含Null值的记录都予以输出
"空值"是对null值的中文叫法,两者同指一个东西。 我想是想弄清楚null(空值)与零长度字符串''(或称为空字符串)之间的区别。
SELECT
a.update_date,
a.user_id,
a.news_id,
(CASE WHEN b.counter IS NULL THEN 0 ELSE b.counter END) as 'Counter'
FROM (
SELECT update_date, user_id, news_id
FROM t_comment
GROUP BY update_date, user_id, news_id) a
LEFT OUTER JOIN
(
SELECT update_date, user_id, news_id,
count(*) AS counter FROM t_comment
WHERE user_id = 2 AND news_id = 15
GROUP BY user_id, news_id
) b
ON a.update_date = b.update_date
AND a.user_id = b.user_id
AND a.news_id = b.news_id
GO
T-SQL实现,原理如上,未经测试。祝你好运。