在古希腊单词的MySQL数据库中(在utf8mb4_unicode_ci中整理)我试图检测哪些单词以大写字母开头,在这种情况下,将值1添加到字段include中。我尝试过使用二进制的几个选项,例如
UPDATE word
SET include = 1
WHERE LEFT(`lemma`, 1) REGEXP BINARY '[Α-Ω]'
但其他UPPER等解决方案也无效。有什么想法吗?
答案 0 :(得分:0)
REGEXP
仅适用于字节,因此非英文字母会被击中或错过。
MariaDB 10.0.5具有“pcre”,因此它确实处理utf8 regexps。
Α-Ω
是十六进制CE91-CEA9
。
WHERE HEX(lemma) REGEXP '^CE'
检查以希腊字母开头。 (它会捕获所有΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξο
。)
限制为大写字母Α-Ω
(根据您的要求):
WHERE HEX(LEFT(lemma, 1)) BETWEEN 'CE91' AND 'CEA9'
当我在这里时,这会检查lemma
中的希腊语 :
WHERE HEX(lemma) REGEXP '^(..)*CE'
(再次假设更长的字母列表,而不仅仅是Α-Ω
。)
(我的评论适用于CHARACTER SET utf8
或utf8mb4
;任何COLLATION
。