Понимает ли Мускуль регулярки?

12
[Удален]
696

Хочу сделать подобный запрос:

UPDATE `jos_content` SET `alias` = replace(`alias`, '-s-(.*)','') WHERE `catid` = 233

Но скорее всего не прокатит, как правильно прописать регулярку (любой символ) при запросах в sql ?

N
На сайте с 06.05.2007
Offline
419
#1

регулярки только на поиск совпадений. выражения замены, как во многих других реализациях регулярных выражений, не понимает.

ну функций то много разных. сооруди там что-нибудь.

Кнопка вызова админа ()
[Удален]
#2

если бы знал - соорудил :)

Как можно сократить урл (алиас) по тому примеру что я привел?

D0
На сайте с 15.12.2009
Offline
59
#3

SELECT * FROM Persons WHERE City LIKE 's%'

"%" - данный знак является маской. Обозначает любые символы.

Жизнью правит случай, а не мудрость.
[Удален]
#4

Правильно ли я понимаю что можно выполнить запрос так?

UPDATE `jos_content` SET `alias` = replace(`alias`, '-s-%','') WHERE `catid` = 233

Онтарио
На сайте с 30.06.2009
Offline
37
#5

как вариант можно попробовать так:

UPDATE `jos_content` SET `alias` = SUBSTRING(`alias`, LOCATE('-s-', `alias`), LENGTH(`alias`)-LOCATE('-s-', `alias`)) WHERE `catid` = 233;

только не советую без бэкапов - не проверял

[Удален]
#6

Восстанавливаю бекап :) все алиасы исчезли и ссылки стали вида site.ru/categoriya/id а были site.ru/categoriya/id-alias

Онтарио
На сайте с 30.06.2009
Offline
37
#7

Из этого:

Sinaps:
Хочу сделать подобный запрос:

UPDATE `jos_content` SET `alias` = replace(`alias`, '-s-(.*)','') WHERE `catid` = 233

Но скорее всего не прокатит, как правильно прописать регулярку (любой символ) при запросах в sql ?

я понял, что нужно обрезать `alias` у альясов окончания после '-s-' включительно. То есть было "/cat/my-url-s-123.html" стало "/cat/my-url". Собственно это и получилось.

В любом случае смысл как заменять строки должен быть понятен, для остальных вопросов:

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Да и кстати, если не все алиасы содержат '-s-', то надо добавить условие в WHERE LOCATE('-s-', `alias`) > 0

[Удален]
#8

Нужно было обработать часть алиасов, которые заканчивались на конструкцию -s-

например

site.ru/categoriya/id-slovo-s-mudata

сделать

site.ru/categoriya/id-slovo

Но -s- такая конструкция есть не у всех

Онтарио
На сайте с 30.06.2009
Offline
37
#9

значит так должно получится:

UPDATE `jos_content` SET `alias` = SUBSTRING(`alias`, LOCATE('-s-', `alias`)+3, LENGTH(`alias`)-LOCATE('-s-', `alias`)+3) WHERE `catid` = 233 AND LOCATE('-s-', `alias`) > 0;

[Удален]
#10

Восстанавливаю бекап :) Обрезалось но не стой стороны :)

Было так site.ru/categoriya/id-slovo-s-mudata

стало так site.ru/categoriya/id-mudata

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий