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

如何在SQL中统计一行内值不为'nincs'的文本单元格总个数

问题原因

你直接对文本列执行加法运算的逻辑有问题:数据库会默认尝试将文本内容隐式转换为数值后再相加,无法转为数值的"nincs"及其他普通文本都会被识别为0,自然返回结果为0。

解决方法

全数据库通用写法(兼容MySQL、PostgreSQL、SQL Server等所有主流数据库)

通过CASE WHEN对每列做条件判断,符合要求的单元格计为1,不符合计为0,再求和即可得到单行符合要求的单元格总数:

SELECT 
  (
    CASE WHEN kap_bar_01 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_02 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_03 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_04 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_05 <> 'nincs' THEN 1 ELSE 0 END
  ) AS valid_cell_count
FROM mymodell

简化写法(仅适用于MySQL)

MySQL中布尔判断结果会默认转为1(真)/0(假),可以直接简写为:

SELECT 
  (kap_bar_01 <> 'nincs') + 
  (kap_bar_02 <> 'nincs') + 
  (kap_bar_03 <> 'nincs') + 
  (kap_bar_04 <> 'nincs') + 
  (kap_bar_05 <> 'nincs') AS valid_cell_count
FROM mymodell

统计全表总符合数

如果需要统计整张表所有行的符合要求的单元格总数量,在外层加SUM聚合即可:

SELECT 
  SUM(
    CASE WHEN kap_bar_01 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_02 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_03 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_04 <> 'nincs' THEN 1 ELSE 0 END +
    CASE WHEN kap_bar_05 <> 'nincs' THEN 1 ELSE 0 END
  ) AS total_valid_count
FROM mymodell

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:09