"""MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。""" _UNICODE_CI = "utf8mb4_unicode_ci" def unicode_ci(col): """将列显式设为 utf8mb4_unicode_ci。""" return col.collate(_UNICODE_CI) def eq_unicode(left, right): """跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。""" return unicode_ci(left) == unicode_ci(right) def like_unicode(col, pattern: str): """LIKE 模糊匹配时统一排序规则。""" return unicode_ci(col).like(pattern)