powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запись в поле части текста из другого поля
11 сообщений из 11, страница 1 из 1
Запись в поле части текста из другого поля
    #40098019
weberilo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, с регулярным выражение в апдейт запросе.
Допустим, есть таблица с полем number содержащим код страны
number
-------------------------------
РОСС RU .АЯ42.В31235
С- IT .АЮ64.В.01123
ТС RU С- FR .АЮ85.А.06560

каким запросом я могу сделать UPDATE таблицы и записать в поле strana соответствующие коды стран?

strana
-------------------------------
RU
IT
FR
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098025
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weberilo
ТС RU С- FR .АЮ85.А.06560

Почему FR, а не TC (Turks and Caicos Islands) или же RU?

Опишите как отличить одно от другого, что может меняться в тексте.
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098026
weberilo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

нужны только два символа перед первой точкой
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098028
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weberilo,

тогда и регулярка не нужна, просто substring(number, position('.' in number) - 2, 2)
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098040
freebsdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weberilo,

А если регулярка всё такие будет нужна, то: SELECT SUBSTR(REGEXP_SUBSTR(number, '([A-Z.]{3})'), 1, 2) from <table>;

вот запрос который вам должен подойти

update <table> set strana = SUBSTR(REGEXP_SUBSTR(number, '([A-Z.]{3})'), 1, 2);

Ну или то что сверху вам написали
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098042
weberilo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Спасибо
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098059
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebsdd
weberilo,

А если регулярка всё такие будет нужна, то: SELECT SUBSTR(REGEXP_SUBSTR(number, '([A-Z.]{3})'), 1, 2) from <table>;

Пока не встретится первый прилетевший дятел какой-нибудь TCRU С-FR.АЮ85.А.06560
Что в символьной маске забыла точка? '([A-Z]{2})\\.' хотя бы
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098060
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше RIGHT(SUBSTRING_INDEX(number, '.', 1), 2) . Регэкспы для такой задачи явно избыточны.
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098086
freebsdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
freebsdd
weberilo,

А если регулярка всё такие будет нужна, то: SELECT SUBSTR(REGEXP_SUBSTR(number, '([A-Z.]{3})'), 1, 2) from <table>;

Пока не встретится первый прилетевший дятел какой-нибудь TCRU С-FR.АЮ85.А.06560
Что в символьной маске забыла точка? '([A-Z]{2})\\.' хотя бы



UPD: Да, ваш способ получше будет
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098088
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebsdd,

окай, объясняю наглядно:
Код: plaintext
1.
2.
3.
4.
5.
6.
MariaDB [(none)]> SELECT SUBSTR(REGEXP_SUBSTR('TCRU С-FR.АЮ85.А.06560', '([A-Z.]{3})'), 1, 2) as result;
+--------+
| result |
+--------+
| TC     |
+--------+
1 row in set (0.000 sec)

Насколько это похоже на "нужны только два символа перед первой точкой"?
...
Рейтинг: 0 / 0
Запись в поле части текста из другого поля
    #40098089
freebsdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
freebsdd,

окай, объясняю на наглядно:
Код: plaintext
1.
2.
3.
4.
5.
6.
MariaDB [(none)]> SELECT SUBSTR(REGEXP_SUBSTR('TCRU С-FR.АЮ85.А.06560', '([A-Z.]{3})'), 1, 2) as result;
+--------+
| result |
+--------+
| TC     |
+--------+
1 row in set (0.000 sec)

Насколько это похоже на "нужны только два символа перед первой точкой"?



Да, проверил, ваш способ получше будет, я пробовал с "\." не знал, что для mysql Нужно "\\."
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запись в поле части текста из другого поля
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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