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