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

使用Unicode搜索字符串查询ASCII列时出现「Illegal mix of collations」及#NAME?问题求助

使用Unicode搜索字符串查询ASCII列时出现「Illegal mix of collations」及#NAME?问题求助

嘿,我之前也碰到过类似的问题,折腾了好一阵才理顺,给你分享下我的解决思路,希望能帮到你!

先解决「Illegal mix of collations」错误

这个问题本质是Unicode字符串和ASCII列的排序规则不兼容导致的——数据库没法直接对比两种不同排序规则下的字符。我当时用了两种方案,你可以根据自己的情况选:

  • 方案1:修改表列的编码和排序规则(推荐长期方案)
    如果你的数据库允许修改表结构,直接把ASCII列转换成UTF-8编码(现在MySQL等主流数据库都推荐用utf8mb4),排序规则统一成utf8mb4_unicode_ci或者utf8mb4_general_ci。执行的SQL命令大概是这样:
ALTER TABLE 你的表名 MODIFY COLUMN 你的列名 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

⚠️ 注意:修改前一定要先备份数据,避免意外丢失!

  • 方案2:查询时临时转换字符串的排序规则(应急方案)
    如果没法改表结构,就在查询里把Unicode字符串转换成和ASCII列一致的编码和排序规则。比如你的列用的是latin1_swedish_ci排序规则,那查询可以写成:
SELECT * FROM 你的表名 WHERE 你的列名 = CONVERT('你的Unicode搜索字符串' USING latin1) COLLATE latin1_swedish_ci;

记得把里面的编码和排序规则替换成你实际列的配置哦。

再处理#NAME?问题

这个错误我当时是在Excel用Power Query连接数据库时碰到的,大概率是这几个原因:

  • SQL语句有语法错误:先把你的SQL拿到数据库客户端(比如MySQL Workbench、Navicat)里跑一遍,看看是不是函数名、列名拼写错了——比如不小心把name写成了#name,或者用了数据库不支持的函数,工具就会返回#NAME?。
  • 连接工具的编码不匹配:如果SQL本身没问题,那可能是连接工具(比如ODBC驱动、Excel插件)的编码设置和数据库不一致,导致工具解析查询结果时出错。你可以检查下工具的编码配置,改成和数据库列一致的编码(比如latin1或者utf8mb4)。
  • 工具函数引用错误:如果是在Excel单元格里用函数调用查询结果,那可能是函数名拼写错了(比如把VLOOKUP写成VLOKUP),或者引用的单元格/范围有问题,这时候就得检查Excel函数的写法了。

你可以先按这个顺序排查,应该能解决问题!

备注:内容来源于stack exchange,提问作者jjorge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:08:08