powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определить, что буква заглавная
12 сообщений из 12, страница 1 из 1
Определить, что буква заглавная
    #39704611
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Возникла задача определять, что 3я буква в поле заглавная.

Пробовал так:
Код: sql
1.
2.
3.
4.
SELECT `field1`, ..., `fieldN` 
FROM `tabla` 
WHERE `ID` BETWEEN 1 and 100000 
AND SUBSTRING(`fieldX`, 2, 3) REGEXP 'ул[А-Я]' 



И так:
Код: sql
1.
2.
3.
4.
5.
SELECT `field1`, ..., `fieldN` 
FROM `tabla` 
WHERE `ID` BETWEEN 1 and 100000 
AND SUBSTRING(`fieldX`, 2, 3) REGEXP 'ул[А-Я]'
AND SUBSTRING(`fieldX`, 4, 1) = UPPER(SUBSTRING(`fieldX`, 4, 1))



Но, выдает все записи, которые начинаются на "ул". Складывается ощущение, что запрос не учитывает регистр.

Можно ли как-то решить мою задачу по-другому или заставить MySQL учитывать регистр?
---
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704613
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte3я буква в поле заглавная.Уточните, "третья буква является заглавной" или "третий символ является заглавной буквой" ?
MegabyteНо, выдает все записи, которые начинаются на "ул".А зачем у вас эти буквы в запросе?
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704616
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftMegabyte3я буква в поле заглавная.Уточните, "третья буква является заглавной" или "третий символ является заглавной буквой" ?
MegabyteНо, выдает все записи, которые начинаются на "ул".А зачем у вас эти буквы в запросе?
"третья буква является заглавной" или "третий символ является заглавной буквой" - если честно, не понял, в чем разница. :)

Прошу прощения полное условие: первые 2 буквы "ул", а 3я - заглавная - такие строки надо вычислить!
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704617
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кодировка то сравнения поля какая - *_bin или *_general_ci? В последнем случае регистр не учитывается.
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704620
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte3я - заглавная - такие строки надо вычислить!
Так третья
Код: sql
1.
SUBSTRING(`fieldX`, 3, 1) 

А у Вас там четверка...
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704621
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte"третья буква является заглавной" или "третий символ является заглавной буквой" - если честно, не понял, в чем разница. :)"12abC" - третья буква является заглавной буквой "C", а третий символ "a" не является заглавной буквой.
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704622
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleКодировка то сравнения поля какая - *_bin или *_general_ci? В последнем случае регистр не учитывается.
Значит кодировка, да utf8_general_ci... Спасибо, покопаю.

miksoftMegabyte"третья буква является заглавной" или "третий символ является заглавной буквой" - если честно, не понял, в чем разница. :)"12abC" - третья буква является заглавной буквой "C", а третий символ "a" не является заглавной буквой.
А, вы про цифры... Не подумал в таком ракурсе. :)
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704623
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

А какая кодировка поля fieldX?
Покажите лучше DDL всей таблицы.
И какая версия MySQL?

А то есть нюанс:
https://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multibyte safe and may produce unexpected results with multibyte character sets.
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39704624
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteА, вы про цифры... Не подумал в таком ракурсе. :)про любые символы, не являющиеся буквами.
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39705238
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftMegabyte,

А какая кодировка поля fieldX?
Покажите лучше DDL всей таблицы.
И какая версия MySQL?

А то есть нюанс:
https://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multibyte safe and may produce unexpected results with multibyte character sets.

кодировка поля fieldX utf8_general_ci

Версия: вообще это MariaDB, v10.1.32.

Возможно как-то работать с регистром, не меняя кодировку самого поля? Ну там задать кодировку чисто в запросе?
А то боюсь, не вылезет ли где-то в другом месте проблема...

p.s. честно говоря, не сталкивался еще с задачей до этого, где важен регистр. :)
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39705265
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteВерсия: вообще это MariaDB, v10.1.32. https://mariadb.com/kb/en/library/regexp/ REGEXP is not case sensitive, except when used with binary strings.
Весь объем доки на эту тему, увы, читать нет времени:
https://mariadb.com/kb/en/library/regexp/
https://mariadb.com/kb/en/library/pcre/
https://mariadb.com/kb/en/library/regular-expressions-overview/
https://mariadb.com/kb/en/library/server-system-variables/#default_regex_flags
http://www.pcre.org/

По идее, должно быть как-то так:
Код: sql
1.
2.
3.
4.
SELECT ...
FROM ...
WHERE ...
AND `fieldX` REGEXP BINARY '^ул[ЁА-Я]'
...
Рейтинг: 0 / 0
Определить, что буква заглавная
    #39705885
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Покопаюсь.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Определить, что буква заглавная
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]