SQL запрос по поиску и замене двух строчек

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
Здравствуйте в базе1 и колонке1 есть две строки вида:
строка1
строка2
Подскажите пожалуйста как должен выглядеть запрос чтобы найти эти две строки и заменить на:
новаястрока1
новаястрока2
Спасибо.
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Здравствуйте в базе1 и колонке1 есть две строки вида:
строка1
строка2
Подскажите, пожалуйста, как должен выглядеть запрос, чтобы найти эти две строки и заменить на:
новаястрока1
новаястрока2
Спасибо.
Запрос, если правильно понял, должен выглядеть так LIKE 'строка%' . Ссылка на FAQ. В любом случае он вам должен подойти.))
После того как получите выборку через цикл работаете с каждой отдельной строкой.
 

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
Запрос, если правильно понял, должен выглядеть так LIKE 'строка%' . Ссылка на FAQ. В любом случае он вам должен подойти.))
После того как получите выборку через цикл работаете с каждой отдельной строкой.
у меня две строки одинаковые, не получится работать с каждой по отдельности.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Если просто надо заменить, по сути, и первоначальный текст точно известен, то в один запрос:
SQL:
UPDATE `база1` SET `колонка1` = "новаястрока1" WHERE `колонка1` = "строка1";
UPDATE `база1` SET `колонка1` = "новаястрока2" WHERE `колонка1` = "строка2";
Либо как-то точнее описать задачу ))
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
update таблица set поле = новое значение where поле = то что нужно заменить
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
у меня две строки одинаковые, не получится работать с каждой по отдельности.
Либо как-то точнее описать задачу ))
Да, вообще не понятно, что человек хочет. Можно ещё так, если строка одинаковая: UPDATE "база1" SET "колонка1" = "новая строка" WHERE "колонка1" LIKE "строка%";
 

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
Да, вообще не понятно, что человек хочет. Можно ещё так, если строка одинаковая: UPDATE "база1" SET "колонка1" = "новая строка" WHERE "колонка1" LIKE "строка%";
если быть точнее, то у меня две одинаковые строки:
одинаковая строка
одинаковая строка
мне нужно поменять вторую строку на 100 страницах одним sql запросом и получить:
одинаковая строка
новая строка
как-то так...
прошу прощения, что мудренно изначально изложил..
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
549
Благодарностей
1 130
Баллы
93
Если быть точнее, то у меня две одинаковые строки:
одинаковая строка
одинаковая строка

мне нужно поменять вторую строку на 100 страницах одним sql запросом и получить:
одинаковая строка
новая строка

Как-то так...
Прошу прощения, что мудрено изначально изложил..
UPDATE "база1" SET "колонка1" = "новая строка" WHERE "колонка1" LIKE "одинаковая строка";
Пояснение:
Там где новая строка. Это то на что будет заменено. То есть 100 строк будут перезаписаны в "колонка 1". При условии если в "колонка 1" содержится текст одинаковая строка.
Подробнее как пользоваться оператором "LIKE" я привел по ссылке выше.

Если нужна четкое содержание, то UPDATE "test" SET "Столбец 2" = "строка новая" WHERE "Столбец 2" = "строка";
 
Последнее редактирование:
  • Спасибо
Реакции: mantronix

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
Самый простой вариант, для нашего понимания, скинуть строку которую вы хотите заменить и строку на которую
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Если честно, тут уже не в тексте строки вопрос )) Меня больше смутило "мне нужно поменять вторую строку на 100 страницах одним sql". Каких страницах, только вторую, начиная со второй, что делать с первой?
В общем, как поставлена задача, такие и ответы ))

PS. Вообще, если есть необходимость как-то работать с SQL, то лучше поразбираться самому. Советовал бы поискать в интернете курс по SQL от GeekBrains. Весьма толково рассказывает основы, структуру и синтаксис. Уверен, для 95% задач, с которыми приходится сталкиваться в работе, этого будет достаточно.
 
  • Спасибо
Реакции: mantronix и djaga

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
Если честно, тут уже не в тексте строки вопрос )) Меня больше смутило "мне нужно поменять вторую строку на 100 страницах одним sql". Каких страницах, только вторую, начиная со второй, что делать с первой?
В общем, как поставлена задача, такие и ответы ))

PS. Вообще, если есть необходимость как-то работать с SQL, то лучше поразбираться самому. Советовал бы поискать в интернете курс по SQL от GeekBrains. Весьма толково рассказывает основы, структуру и синтаксис. Уверен, для 95% задач, с которыми приходится сталкиваться в работе, этого будет достаточно.
Да и впринципе все ответы дали, пр крайней мере на заданный вопрос
 
  • Спасибо
Реакции: mantronix

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
UPDATE "база1" SET "колонка1" = "новая строка" WHERE "колонка1" LIKE "одинаковая строка";
Пояснение:
Там где новая строка. Это то на что будет заменено. То есть 100 строк будут перезаписаны в "колонка 1". При условии если в "колонка 1" содержится текст одинаковая строка.
Подробнее как пользоваться оператором "LIKE" я привел по ссылке выше.

Если нужна четкое содержание, то UPDATE "test" SET "Столбец 2" = "строка новая" WHERE "Столбец 2" = "строка";
Прошу прощения что пропал, все удалось сделать, спасибо за помощь всем!)
 

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
И подскажите пожалуйста по ещё одному вопросу, у меня на сайте у каждого товара стоимость закомментирована, каким sql запросом я могу обновить цену внутри комментария, не трогая сам коммент? Причем sql запрос нужно сделать по всем таблицам, не привязывая к одной. Спасибо!
<!-- цена1 -->100<!-- цена1 -->
<!-- цена2 -->100<!-- цена2 -->
 
Последнее редактирование:

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
И подскажите пожалуйста по ещё одному вопросу, у меня на сайте у каждого товара стоимость закомментирована, каким sql запросом я могу обновить цену внутри комментария, не трогая сам коммент? Причем sql запрос нужно сделать по всем таблицам, не привязывая к одной. Спасибо!
<!-- цена1 -->100<!-- цена1 -->
<!-- цена2 -->100<!-- цена2 -->
А не проще было их изначально по разным столбцам разнести без комментирования? Это и правильнее, имхо (хотя бы с точки зрения структуры, где числа все-таки есть числа, поэтому в поле с текстом их пихать как-то странно), и для работы намного логичнее, ибо быстрее позволит находить и менять.
ps. Задача опять так криво объяснена, что вариантов решения будет опять на десяток постов.
 

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
А не проще было их изначально по разным столбцам разнести без комментирования? Это и правильнее, имхо (хотя бы с точки зрения структуры, где числа все-таки есть числа, поэтому в поле с текстом их пихать как-то странно), и для работы намного логичнее, ибо быстрее позволит находить и менять.
ps. Задача опять так криво объяснена, что вариантов решения будет опять на десяток постов.
Просто сайт на DLE движке и наименее трудозатратно было закомментировать цену к каждому товару.
Постараюсь описать все максимально подоробно)
Есть база данных BASE. в которой есть таблица dle_post, где имеется 10000 строк(новостей). В каждой новости есть товар у которого есть стоимость, и эта стоимость закомментирована подобным видом:
<!-- яблоки -->100<!-- цена -->
<!-- груши-->100<!-- цена -->
<!-- апельсины-->100<!-- цена -->
Так вот, мне необходим поменять стоимость яблок и груш, т.е. необходимо поменять цену между комментариями <!-- яблоки --><!-- цена --> и <!-- груши--><!-- цена -->

Простыми словами в бд BASE и таблице dle_post, между комментариям <!-- яблоки --><!-- цена --> и <!-- груши--><!-- цена --> нужно вставить цену.
 
Последнее редактирование:

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Мне кажется, в твоем случае проще вытащить все строки из бд, где LIKE% "яблоки".
Потом в цикле их обработать, заменив цены, затем залить обратно.
Хотя, возможно, есть какие-то запросы, где можно сразу заменить часть значения по регулярке. Но я так далеко не углублялся, не было такой необходимости ))
 

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18
Да причем нужно это делать регулярно, обновлять цены. Должна по сути быть такая команда которая сможет каждый раз вставлять новую цену между комментариями. Если с регуляркой это можно сделать, то с SQL запросом тоже.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
Да причем нужно это делать регулярно, обновлять цены. Должна по сути быть такая команда которая сможет каждый раз вставлять новую цену между комментариями. Если с регуляркой это можно сделать, то с SQL запросом тоже.
Ну так гугл в помощь )) Там на все вопросы есть ответы ))
 

mantronix

Client
Регистрация
29.09.2010
Сообщения
185
Благодарностей
2
Баллы
18

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 631
Благодарностей
1 226
Баллы
113
вот я даже не могу понять как это может называться, не могу найти..
Ну, что-нибудь типа "SQL поиск и замена текста по регулярному выражению". Ну или как-то так )))
Вообще, грамотно поставленный вопрос - это уже полдела. Даже просто для постановки задачи. Даже самому себе ))

update: Вот тут какой-то подобный пример. Можно повнимательнее поизучать.
Про LIKE подробнее можно, например, тут глянуть примеры.
 
Последнее редактирование:

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)