如何在phpMyAdmin中对VARBINARY列执行带LIKE子句的MySQL查询?
VARBINARY类型列LIKE查询解决方案
完全可以直接在SQL语句内部完成类型转换实现匹配,无需使用预编译语句,phpMyAdmin原生支持相关语法。
可用查询方案
方案1:转换搜索字符串为二进制(推荐,性能更高)
该方案可以复用VARBINARY列上的索引,适合大数据量表查询:
-- 简化写法,用BINARY前缀直接转换搜索字符串 SELECT * FROM `cg_mclean_refs` WHERE mediaUrl LIKE BINARY '%Hello%'; -- 等效CAST写法,逻辑完全一致 SELECT * FROM `cg_mclean_refs` WHERE mediaUrl LIKE CAST('%Hello%' AS BINARY);
原理:VARBINARY是二进制存储格式,默认按字节逐位匹配,普通字符串和它对比时会因编码逻辑不匹配导致查询无结果,将搜索字符串转为二进制后即可对齐匹配规则。
方案2:转换VARBINARY列为字符串(适合忽略大小写的场景)
如果需要不区分大小写搜索,可以选择将列转为字符类型后匹配,该方案会放弃索引,仅适合小数据量场景:
SELECT * FROM `cg_mclean_refs` WHERE CAST(mediaUrl AS CHAR(255)) LIKE '%Hello%';
原有查询失败的额外原因
你之前的查询除了类型不匹配外,还有两处语法错误:
- 表名
cg_mclean_refs使用了单引号包裹,MySQL中表名、列名这类标识符需要用反引号`包裹,单引号仅用于包裹普通字符串,会触发语法报错- LIKE关键字后不需要加括号,虽然部分MySQL版本兼容带括号的写法,但不符合标准语法规范,建议去掉括号避免兼容性问题。
内容的提问来源于stack exchange,提问作者Riccardo
相关产品推荐
相关产品推荐

