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

在MySQL C接口中如何区分TEXT与BLOB字段?

区分MySQL结果集中的TEXT与BLOB类型

当使用mysql_fetch_field_direct获取字段信息时,TEXT和BLOB类型都会被标记为MYSQL_TYPE_BLOB,可以通过以下两个属性区分二者:

  • 字符集编号(charsetnr):TEXT属于字符型字段,会关联有效的字符集编号(值不为0);BLOB是二进制类型,无关联字符集,charsetnr为0。
  • 二进制标志位(BINARY_FLAG):BLOB类型的field->flags会包含BINARY_FLAG;TEXT类型则不会设置该标志。

代码示例

MYSQL_FIELD *field = mysql_fetch_field_direct(resultSet, col);
if (field->type == MYSQL_TYPE_BLOB) {
    // 判断是否为TEXT类型
    if (field->charsetnr != 0 && !(field->flags & BINARY_FLAG)) {
        // 执行TEXT类型的操作逻辑
    } else {
        // 执行BLOB类型的操作逻辑
    }
}

补充说明

这种判断方式的核心依据是:TEXT本质是带字符集的特殊BLOB,而原生BLOB是纯二进制数据,二者在字符集关联和二进制标志上存在明确差异,通过这两个属性可以准确区分实际类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:56:00