古代ギリシャ語のMySQLデータベース(utf8mb4_unicode_ciで照合)では、どの単語が大文字で始まっているかを検出しようとしています。バイナリを使用していくつかのオプションを試しました。MYSQLはギリシャ語で大文字を検出します
UPDATE word
SET include = 1
WHERE LEFT(`lemma`, 1) REGEXP BINARY '[Α-Ω]'
また、UPPERなどの他のソリューションもありません。何か案は?
古代ギリシャ語のMySQLデータベース(utf8mb4_unicode_ciで照合)では、どの単語が大文字で始まっているかを検出しようとしています。バイナリを使用していくつかのオプションを試しました。MYSQLはギリシャ語で大文字を検出します
UPDATE word
SET include = 1
WHERE LEFT(`lemma`, 1) REGEXP BINARY '[Α-Ω]'
また、UPPERなどの他のソリューションもありません。何か案は?
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
)
これを確認してください:http://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql – Jenish
OK、ありがとう:UPDATE word SET include = 1バイナリ・リフト(補題、1)=バイナリ・アッパー(LEFT(補題1))が問題を解決しました – MarkD
ようこそスタックオーバーフロー。 [コードサンプル '{}'](https://i.imgur.com/3ppJhiE.png)ツールバーのボタンでソースコードを書式設定することができます。今回はあなたのために行いました。また、エディタのすぐ下にプレビューペインがありますので、パブリッシュする前に変更の様子を確認できます。 –