如何在MySQL中搜索组合(非间距)字符

时间:2017-09-13 18:21:20

标签: mysql unicode

在一个古希腊词汇的MySQL数据库中,我想查找字母下面带有点的所有单词(Unicode字符'COMBINING DOT BELOW'(U + 0323))并删除它。

我尝试了各种编码,但似乎都没有工作......

1 个答案:

答案 0 :(得分:0)

我假设您在表col中有一列t,而colCHARACTER SET utf8(或utf8mb4)。

SELECT ...
    FROM t
    WHERE HEX(col) REGEXP '^(..)*CCA3'

将找到U+0323的所有行(编码为UTF-8 CCA3)。

唉,没有简单的方法来修改SQL中的col

如果您有MariaDB,那么UNHEX(REGEXP_REPLACE(HEX(col), 'CCA3', ''))几乎可以正常工作。问题是它可能未对齐(在奇数边界处)。

另一个想法:REPLACE(col, UNHEX('CCA3'), '')可能适用于MySQL或MariaDB。但是,它可能会与Collat​​ions有关。所以,也许这会奏效:REPLACE(col COLLATE utf8_bin, UNHEX('CCA3'), '')