Как разместить заглавную букву в версии MySQL 8.0+

Привет, у меня есть столбец FullName — RamSingh, NehaKaur и т. д. и т. д., и я хочу написать оператор выбора, который возвращает Рама Сингха, Неха Каура и т. д. и т. д. в версии MySql 8.0+. Кроме того, что, если имя состоит из трех заглавных букв, например РамСингхРатхор?

Я пробовал много запросов, например

SELECT REGEXP_REPLACE(CAST('JohnLexxxanon' as BINARY), '^([A-Z][a-z]+)([A-Z][a-z]+)$', '$1 $2');

но это не сработало

MySQL REGEXP_REPLACE не предоставляет возможности ссылаться на группы захвата, поэтому я не думаю, что вы можете сделать это напрямую. Сделайте это в коде представления вашего приложения.

Barmar 08.08.2024 21:51

@Barmar, Да, MySQL 8.0 использует $1, $2, ... для ссылки на захваченные группы. В инструкции об этом не упоминается, но работает.

Bill Karwin 08.08.2024 22:33

Вот почему мы любим MySQL :)

Barmar 08.08.2024 22:34

пожалуйста, укажите точный результат select version();, а не просто «8,0+»

ysth 09.08.2024 01:28

@BillKarwin, этот запрос отлично сработал SELECT REGEXP_REPLACE('JohnLexxxanon' COLLATE utf8mb4_0900_as_cs, '^([[:upper:]][[:lower:]]+)([[:upper:]][[:lower:]] + но что, если у нас есть такие имена, как Суреш Сингх Ратхоре, как бы мы с этим справились?

Shiv Sharma 10.08.2024 17:49

А как насчет ирландского («О'Генри») и голландского («ван дер что-то») и, возможно, других.

Rick James 10.08.2024 22:13

Обычно лучше очищать данные во время их вставки.

Rick James 10.08.2024 22:14
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
7
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

поможет ли следующее?

SELECT REGEXP_REPLACE('ThisHasMultipleUpperCaseWords' COLLATE utf8mb4_0900_as_cs ,'([A-Z])',' $1');
+---------------------------------------------------------------------------------------------+
| REGEXP_REPLACE('ThisHasMultipleUpperCaseWords' COLLATE utf8mb4_0900_as_cs ,'([A-Z])',' $1') |
+---------------------------------------------------------------------------------------------+
|  This Has Multiple Upper Case Words                                                         |
+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Как уже отмечали другие, «очищение» перед его введением может быть предпочтительнее.

Это очень полезно, приятель<3 большое спасибо @ticktalk

Shiv Sharma 11.08.2024 22:06

Другие вопросы по теме