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

如何通过Sequel PRO显示的varbinary字符串查询IP数据?

正确查询varbinary列的方法

你遇到的问题核心是:Sequel Pro显示的"乱码"是把varbinary的原始二进制数据按当前字符集(utf8mb4)错误解码后的结果,直接复制这个乱码转成BINARY,得到的二进制值和原始varbinary数据完全不一致,所以无法匹配。

以下是两种可靠的解决方法:

方法1:使用十六进制字符串查询(推荐)

这是最准确的方式,因为十六进制可以精确表示二进制数据:

  1. 先获取目标IP对应的十六进制值:
    如果知道其他匹配条件(比如id),执行以下语句得到ip列的十六进制表示:

    SELECT HEX(ip) FROM IP_MAP WHERE id = 你的ID值;
    

    你会得到类似C39CC3974C253EC2A8E282AC4EC3B350这样的十六进制字符串。

  2. 用十六进制值查询匹配行:
    将上面得到的十六进制字符串传入UNHEX()函数,即可精准匹配原始varbinary数据:

    SELECT * FROM IP_MAP WHERE ip = UNHEX('C39CC3974C253EC2A8E282AC4EC3B350');
    

方法2:基于字符集转换查询(仅当十六进制不可用时尝试)

如果只能通过Sequel Pro显示的乱码来查询,可以尝试将乱码按Sequel Pro使用的字符集(这里是utf8mb4)转换为二进制:

SELECT * FROM IP_MAP WHERE ip = CAST('Ü×L%>¨€NóP' AS BINARY CHARACTER SET utf8mb4);

注意:这种方法不一定百分百成功,因为部分二进制序列在utf8mb4中是无效字符,Sequel Pro可能会对其做替换处理,导致转换后的二进制和原始数据不一致。

补充说明:varbinary列存储的是原始二进制字节,不会做字符集转换。Sequel Pro为了显示内容,会强制用当前连接的字符集去解码这些字节,所以出现"乱码"是正常现象,不要直接使用这些乱码字符串做二进制匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:50:16