mysql - 创建新表后将空值保留为''?
问题描述
我有下表:
cats
----------------------------------
name owner no_of_kittens
----------------------------------
bob hanna 1
tip frank
spark george 6
lucky rita
lady terry 3
----------------------------------
我想通过以下方式创建一个新表:
CREATE TABLE cats_with_kittens (
name VARCHAR(255) NOT NULL,
no_of_kittens VARCHAR(255)
);
INSERT INTO cats_with_kittens
SELECT name, count(no_of_kittens)
FROM cats
GROUP BY name;
问题是在结果表中,tip 和 lucky 的 no_of_kittens 值是 1,而不是初始表中的空字符串。
有没有办法创建表,以便没有 no_of_kittens 的值是空字符串''?
解决方案
COUNT()
还将计算空字符串,您可以添加case
express 使其不可数:
SELECT name, COUNT(CASE WHEN no_of_kittens <> '' THEN 1 ELSE 0 END) AS no_of_kittens
FROM cats
GROUP BY name;
推荐阅读
- c# - C# - 一旦调用 GetByteArrayAsync 就监控进度 Httpclient?
- google-cloud-functions - 解决方法 Google Cloud Function 内存限制
- mocking - AutoFixture AutoMoq - SetReturnsDefault() 不适用于夹具创建的模拟
- c++ - 具有动态和静态刚体的 PhysX 碰撞过滤器
- javascript - 在 Google Script 中将 PDF 转换为文本时出错
- c# - 使用异常过滤器进行日志记录时如何避免“并非所有代码路径都返回值”
- eclipse-plugin - Eclipse 谷歌云 SQL 连接
- bash - 从 Kodi 菜单启动脚本
- javascript - 如何在单击时创建带有新文本的按钮?
- powerpc - 裸机 hello world PPC64 (QEMU + OFW) 不工作