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

如何在MySQL中统计指定ID行内非空、非NULL填充列的数量,适配WordPress场景

MySQL 统计指定行已填充列数量的实现方法

原生 SQL 写法

核心逻辑是对每列做非空且非空字符串判断,符合条件计数1,求和后就是已填充的列总数:

SELECT 
    (CASE WHEN ID IS NOT NULL AND ID != '' THEN 1 ELSE 0 END) +
    (CASE WHEN FName IS NOT NULL AND FName != '' THEN 1 ELSE 0 END) +
    (CASE WHEN LName IS NOT NULL AND LName != '' THEN 1 ELSE 0 END) AS filled_column_count
FROM 你的表名
WHERE ID = 1;

按你给出的示例表测试:

  • WHERE ID = 1时返回结果为2,对应符合要求的列ID、FName
  • WHERE ID = 2时返回结果为2,对应符合要求的列ID、LName
    完全符合你的预期输出。

如果需要同时获取已填充的列名,可以调整查询逻辑:

SELECT 
    (CASE WHEN ID IS NOT NULL AND ID != '' THEN 1 ELSE 0 END) +
    (CASE WHEN FName IS NOT NULL AND FName != '' THEN 1 ELSE 0 END) +
    (CASE WHEN LName IS NOT NULL AND LName != '' THEN 1 ELSE 0 END) AS filled_column_count,
    CONCAT(
        CASE WHEN ID IS NOT NULL AND ID != '' THEN 'ID,' ELSE '' END,
        CASE WHEN FName IS NOT NULL AND FName != '' THEN 'FName,' ELSE '' END,
        CASE WHEN LName IS NOT NULL AND LName != '' THEN 'LName,' ELSE '' END
    ) AS filled_column_names
FROM 你的表名
WHERE ID = 1;

获取到的列名字符串末尾多余的逗号可以在业务逻辑里直接截取处理。

WordPress 环境适配写法

WordPress 中使用官方提供的 $wpdb 类操作数据库即可,示例代码如下:

// 定义要查询的目标ID
$target_id = 1;
// 引入WordPress全局数据库操作实例
global $wpdb;
// 替换为你实际的表名,自定义表建议自带WP表前缀
$table_name = $wpdb->prefix . '自定义表后缀';
// 预编译SQL语句防注入
$sql = $wpdb->prepare(
    "SELECT 
        (CASE WHEN ID IS NOT NULL AND ID != '' THEN 1 ELSE 0 END) +
        (CASE WHEN FName IS NOT NULL AND FName != '' THEN 1 ELSE 0 END) +
        (CASE WHEN LName IS NOT NULL AND LName != '' THEN 1 ELSE 0 END) AS filled_column_count
    FROM %i
    WHERE ID = %d",
    $table_name,
    $target_id
);
// 执行查询获取计数结果
$filled_count = $wpdb->get_var($sql);

后续直接使用$filled_count变量就能拿到对应统计值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:54:07