You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何实现单个单元格内的数值数量统计?

你现在写的SELECT COUNT(Binlocation1) FROM BinLoc用到的COUNT函数是统计目标列非空的行总数,自然返回的是整列的统计结果,和你要统计单个单元格内的数值数量的需求不匹配。

参考单元格内容示例:
单元格内容示例

实现逻辑

这类单元格内多值一般是用固定分隔符(逗号、空格、分号等)分隔,统计逻辑为:计算单元格总字符长度 → 减去把所有分隔符删除后的单元格长度 → 得到分隔符总个数 → 加1即为单元格内的数值数量。

不同场景写法

  • 场景1:统计指定某一行的单元格数值数量
    需要在WHERE条件中指定你要查询的行的唯一标识(比如主键ID),下面以逗号为分隔符举例:
    • MySQL写法:
    SELECT 
      -- 兼容空值返回0的判断,不需要可以删除
      IF(Binlocation1 IS NULL OR Binlocation1 = '', 0, CHAR_LENGTH(Binlocation1) - CHAR_LENGTH(REPLACE(Binlocation1, ',', '')) + 1) AS 单元格内数值数量
    FROM BinLoc
    -- 替换成你实际的主键列和目标行ID
    WHERE id = 目标行ID;
    
    • SQL Server写法:
    SELECT 
      CASE WHEN Binlocation1 IS NULL OR Binlocation1 = '' THEN 0 
      ELSE LEN(Binlocation1) - LEN(REPLACE(Binlocation1, ',', '')) + 1 END AS 单元格内数值数量
    FROM BinLoc
    WHERE id = 目标行ID;
    
  • 场景2:批量统计所有行每个单元格的数值数量
    去掉上述语句中的WHERE条件即可,查询结果会逐行返回每一行Binlocation1单元格对应的数值个数。

注意:如果你的单元格数值用的是其他分隔符,把上述语句中REPLACE函数里的逗号替换成对应的分隔符即可。

内容的提问来源于stack exchange,提问作者Jvang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:15:06