powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите запрос
22 сообщений из 22, страница 1 из 1
Подскажите запрос
    #38956914
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите запрос:
Имеется таблица t1
В ней есть поле name, которое содержит значения вида "тест группы <тута цифры>гр"
Нужен запрос, чтобы заменить "гр" именно только тогда, когда оно идет сразу после цифр, если "гр" встречается до цифр-игнорировать и не менять.
Знаю, как заменить одно на другое, например
Код: sql
1.
2.
UPDATE t1
SET name=REPLACE(name,'гр','грррр')


Но не знаю, как составить запрос, чтобы выполнялось приведенное выше условие....
Подскажите, плиз.
...
Рейтинг: 0 / 0
Подскажите запрос
    #38956927
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В запросах чайник, просьба не долго и упорно объяснить, а просто написать, как надо...
...
Рейтинг: 0 / 0
Подскажите запрос
    #38956963
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
had81818содержит значения вида "тест группы <тута цифры>гр"все строки именно такого вида, т.е. этим "гр" заканчиваются? left/right в помощь.
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957430
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
had81818,
Код: sql
1.
2.
3.
UPDATE t1
SET name=REPLACE(name,'гр','грррр')
WHERE name LIKE '%[0-9]гр%'
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957435
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, не увидел текст: "тест группы 12гр", сорь
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957472
Cygapb-007а, не увидел текст: "тест группы 12гр", сорьа ещё не увидел, что тут MySQL, а не MS SQL. "Регулярные" шаблоны типа [0-9] тут не работают, если что...
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957531
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхCygapb-007а, не увидел текст: "тест группы 12гр", сорьа ещё не увидел, что тут MySQL, а не MS SQL. "Регулярные" шаблоны типа [0-9] тут не работают, если что...
ну да... мускуль не родной))
как бы красиво было
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
    txt
  , ISNULL(STUFF(txt, NULLIF(PATINDEX('%[0-9]гр%', txt), 0) + 1, 2, 'GROUP'), txt) p
FROM (
  VALUES ( 'тест группы 12гр'      )
  ,      ( 'тест группы 271группы' )
  ,      ( 'тест группы 2'         )
  ,      ( 'тест группы 3 гр'      )
  ) v(txt)

txtpтест группы 12гртест группы 12GROUPтест группы 271группытест группы 271GROUPуппытест группы 2тест группы 2тест группы 3 гртест группы 3 гр

а так...
разве что методом грубого взлома:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE TABLE Table1	(note varchar(100), note2 varchar(100));

INSERT INTO Table1(note)
  VALUES ( 'тест группы 12гр'      )
  ,      ( 'тест группы 271группы' )
  ,      ( 'тест группы 2'         )
  ,      ( 'тест группы 3 гр'      )
  ,      ( 'тест группы 4гр; 5гр'  )
  ;

update table1 set note2=note;

update table1 t
join(
  select 0 n union all select 1 
  union all select 2 union all select 3 
  union all select 4 union all select 5 
  union all select 6 union all select 7 
  union all select 8 union all select 9 
  )n on locate(concat(n.n,'гр'),t.note)>0
set t.note2=insert(t.note2,locate(concat(n.n,'гр'),t.note2)+1,2,'GROUP')
;
select note, note2 from table1;

note note2тест группы 12гр тест группы 12GROUPтест группы 271группы тест группы 271GROUPуппытест группы 2 тест группы 2тест группы 3 гр тест группы 3 гртест группы 4гр; 5гр тест группы 4GROUP; 5гр
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957586
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге запросик как написать?
Код: sql
1.
[0-9]гр


хотел, но так нельзя....
Регулярками часто пользуюсь в нотепаде++, но здесь то никак...
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957598
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
had81818Регулярками часто пользуюсь в нотепаде++, но здесь то никак...
Код: sql
1.
WHERE name REGEXP '[0-9]гр'

только это не поможет
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957616
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нарисуй пользовательскую функцию нужной замены, и используй её в запросе.
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957647
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,
Почему не поможет?
Пробую так:
Код: sql
1.
2.
3.
UPDATE t1
SET name=REPLACE(name,'гр',' гр')
WHERE name REGEXP '[0-9]гр'
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957649
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
had81818Cygapb-007,
Почему не поможет?
потому что 17633807
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957656
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А разве замена не сработает только в местах, где до гр цифры?
И почему?
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957667
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял, что замена срабатывает только после цифр...
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957671
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
had81818А разве замена не сработает только в местах, где до гр цифры?
И почему?
Отберет только те строки, в которых есть '<цифра>гр'
А потом заменит все 'гр' в них

Посмотрите на вариант с желтым цветом. Муторно, но работает

Или, если все строки строго вида '... <цифра>гр' - замените 2 последних знака в них на то, что надо (это вам практически мгновенно посоветовали)
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957699
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В лоб, за ТРИ СЕКУНДЫ
1. замена "тест группы" на "XYZ"
2. замена "гр" на то что нужно
3. обратная замена "XYZ" "тест группы"
частная задача решается частным образом.
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957701
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,
А можно вообще проще-взять дамп, обработать нотепадом++ и закачать на место?
Дамп от нотепада ++ может попортится?
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957720
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_UstinovВ лоб, за ТРИ СЕКУНДЫ
1. замена "тест группы" на "XYZ"
2. замена "гр" на то что нужно
3. обратная замена "XYZ" "тест группы"
частная задача решается частным образом.

Только "тест группы" я для примера привел.
На самом деле-значения например такие (взял слова от балды-важна суть):
Форма граненое сердце. Максимальный вес готового мыла 60гр артикул ххх
Игрушка детская Молоток озвученный 250гр артикул ххх х
Надо отделить граммы от цифр пробелом.
Попробую обработать нотепадом++....
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957721
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все равно это только один раз сделать надо.
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957743
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ЛОБ (не больше 10-ти действий, -5 минут максимум)
замена
"0гр" на "0 гр"
повторить еще 9 раз (для оставшихся цифр)
и выкинуть это из головы
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957778
had81818
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,
Действительно - так и надо сделать.

Код: sql
1.
2.
3.
4.
5.
UPDATE t1
SET name=REPLACE(name,'0гр','0 гр')
UPDATE t1
SET name=REPLACE(name,'1гр','1 гр')
.....


Можно сделать нотепадом или как вверху написал.
Если бы оператор, работающий с бд, знал, что надо для сео отделять "гр" пробелом-проблемы бы не было....
За совет-спасибо!
...
Рейтинг: 0 / 0
Подскажите запрос
    #38957842
had81818Alex_Ustinov,
Действительно - так и надо сделать.

Код: sql
1.
2.
3.
4.
5.
UPDATE t1
SET name=REPLACE(name,'0гр','0 гр')
UPDATE t1
SET name=REPLACE(name,'1гр','1 гр')
.....


Можно сделать нотепадом или как вверху написал.
Если бы оператор, работающий с бд, знал, что надо для сео отделять "гр" пробелом-проблемы бы не было....
За совет-спасибо!только не нужно делать 10 апдейтов. Лучше 10 раз вложить реплайс один в другой и за раз все проапдейтить...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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