Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / REGEXP замена в таблице wordpress / 2 сообщений из 2, страница 1 из 1
16.12.2016, 12:30
    #39368508
mjourist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REGEXP замена в таблице wordpress
Друзья, помогите разобраться.
При включении кеша на wordpress, адрес типа mydomain.com/?p=123 превратился в mydomain.com/Hello-World
Но вот ведь не задача, есть такие ссылки как:

mydomain.com/Hello.-World
mydomain.com/Hello-&-World

при их вводе, сайт выдаёт ошибку.
если удалить все лишние символы типа "." или "&", то всё ок и странички загружаются без проблем

для удаления я искользовал следующий такой запрос:
UPDATE `wp_posts` SET `post_name` = REPLACE( post_name, '.', '' );
UPDATE `wp_posts` SET `post_name` = REPLACE( post_name, '&', '' );

И вот вопрос: как построить запрос так, чтобы удалились все символы, кроме букв,цифр и тире (одним запросом сразу) ?
Чтоб не строить 50 запросов на удаление.
Спасибо.
...
Рейтинг: 0 / 0
16.12.2016, 13:55
    #39368635
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REGEXP замена в таблице wordpress
Используй ХП.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
drop table if exists test;

create table test (fld varchar(32));
insert into test (fld)
select 'one space' union all
select 'two  spases --' union all
select 'space _underline' union all
select 'one_underline' union all
select ' l-space' union all
select 'r-underline_' union all
select 'none' ;

drop procedure if exists multiremove;

delimiter @@

create procedure multiremove(charstodelete text) 
begin
while length(charstodelete)>0 do
	begin
	set @onechar = substring(charstodelete,1,1);
	set charstodelete = substring(charstodelete,2,length(charstodelete));
	set @sql=CONCAT("update test set fld=replace(fld,\'",@onechar,"\',\'\');");
--	select @sql;
	prepare stmt from @sql;
	execute stmt;
	deallocate prepare stmt;
	set @sql='';
	set @onechar='';
	end;
end while;
end;@@

delimiter ;

select concat("\'",fld,"\'") from test;
call multiremove(' _');
select concat("\'",fld,"\'") from test;

drop procedure multiremove;
drop table test;

...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / REGEXP замена в таблице wordpress / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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