2017-04-27 7 views
1

古代ギリシャ語のMySQLデータベース(utf8mb4_unicode_ciで照合)では、どの単語が大文字で始まっているかを検出しようとしています。バイナリを使用していくつかのオプションを試しました。MYSQLはギリシャ語で大文字を検出します

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

また、UPPERなどの他のソリューションもありません。何か案は?

+2

これを確認してください:http://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql – Jenish

+0

OK、ありがとう:UPDATE word SET include = 1バイナリ・リフト(補題、1)=バイナリ・アッパー(LEFT(補題1))が問題を解決しました – MarkD

+0

ようこそスタックオーバーフロー。 [コードサンプル '{}'](https://i.imgur.com/3ppJhiE.png)ツールバーのボタンでソースコードを書式設定することができます。今回はあなたのために行いました。また、エディタのすぐ下にプレビューペインがありますので、パブリッシュする前に変更の様子を確認できます。 –

答えて

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

関連する問題