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

如何在数据库表中搜索排除匈牙利字母的特殊字符?

解决SQL正则表达式排序规则冲突问题

错误原因

你的列使用latin1_swedish_ci排序规则,但正则表达式中的匈牙利字符默认采用utf8mb4_general_ci排序规则,两者编码/排序规则不兼容,导致REGEXP操作报错。

解决方案

方案1:统一正则表达式的排序规则

将正则表达式字符串强制转换为与列一致的排序规则,确保匹配操作的编码兼容:

SELECT
    *
FROM
    `table` T
WHERE
    T.columnname REGEXP '[^a-zA-Z0-9 áéíóöőúüű]' COLLATE latin1_swedish_ci;

如果不确定列的排序规则,可先执行以下语句查询:

SHOW FULL COLUMNS FROM `table` LIKE 'columnname';

方案2:修改列的排序规则为utf8mb4(推荐)

将列的字符集和排序规则改为支持Unicode的utf8mb4系列,不仅能解决当前冲突,还能更好支持匈牙利语等非英文字符:

ALTER TABLE `table` MODIFY COLUMN columnname VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_hungarian_ci;

注意:替换语句中的VARCHAR(255)为你字段实际的长度;utf8mb4_hungarian_ci是针对匈牙利语优化的排序规则,比通用的utf8mb4_general_ci更适配需求。修改完成后,原查询语句即可正常运行。

内容的提问来源于stack exchange,提问作者D.W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:18:12