Я хочу проверить, если строка содержит только прописные буквы. Я знаю, что RLIKE/REGEXP не чувствительны к регистру в MySQL. Так что я пытался использовать класс :upper:
символов:Как проверить заглавные буквы в MySQL?
SELECT 'z' REGEXP '^[[:upper:]]+$';
Это дает верно, хотя г в нижнем регистре, ... почему?
+1 была такая же идея, но не знала, трюк с latin1 набора символов – Stephan
Так, но почему класс персонажа не работает? Потому что я использую неправильную сортировку? почему добавление ': upper:' когда 'A-Z' делает то же самое, а': upper: 'совпадает с': lower: 'когда сортировка' * _ci'? Я думал, что '* _ci' дает dafault, но при использовании': upper: 'он ищет буквы в верхнем регистре. В описании [: character_class:] на http://dev.mysql.com/doc/refman/5.0/en/regexp.html В нем говорится, что я должен посмотреть страницы руководства 'ctype (3)'. Я попробовал 'help ctype',' man ctype', ... ничего не работало –
Я попытался: 'SELECT 'z' RLIKE '^ [AZ] $' COLLATE 'utf8_general_cs';', который дал мне ошибку: 'ERROR 1273 (HY000): Неизвестная сортировка: 'utf8_general_cs''. Команда 'SELECT 'z' RLIKE '^ [A-Z] $' COLLATE 'utf8_general_ci';' отлично работает. Итак, как я могу установить чувствительную к регистру сортировку? –