首页 > 解决方案 > 创建新表后将空值保留为''?

问题描述

我有下表:

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 的值是空字符串''?

标签: mysqlsqlcountmysql-workbenchsql-insert

解决方案


COUNT()还将计算空字符串,您可以添加caseexpress 使其不可数:

SELECT name, COUNT(CASE WHEN no_of_kittens <> '' THEN 1 ELSE 0 END) AS no_of_kittens 
FROM cats
GROUP BY name;

推荐阅读