MYSQL在希腊语中检测大写

时间:2017-04-27 08:22:23

标签: mysql utf-8 uppercase

在古希腊单词的MySQL数据库中(在utf8mb4_unicode_ci中整理)我试图检测哪些单词以大写字母开头,在这种情况下,将值1添加到字段include中。我尝试过使用二进制的几个选项,例如

UPDATE word
SET include = 1
WHERE LEFT(`lemma`, 1) REGEXP BINARY '[Α-Ω]'

但其他UPPER等解决方案也无效。有什么想法吗?

1 个答案:

答案 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 utf8utf8mb4;任何COLLATION