19 lines
548 B
Python
19 lines
548 B
Python
"""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)
|