在一个古希腊词汇的MySQL数据库中,我想查找字母下面带有点的所有单词(Unicode字符'COMBINING DOT BELOW'(U + 0323))并删除它。
我尝试了各种编码,但似乎都没有工作......
答案 0 :(得分:0)
我假设您在表col
中有一列t
,而col
是CHARACTER 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。但是,它可能会与Collations有关。所以,也许这会奏效:REPLACE(col COLLATE utf8_bin, UNHEX('CCA3'), '')