| 
	| 
	
	| 
		
	| 
			
			 
			
				11.06.2015, 13:08
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 01.09.2011 
						Сообщений: 263
					 
		
 |  |  
	| 
				SQL замена подстроки
			 Всем привет, есть вот такой запрос  
	
 
	| Код: |  
	| UPDATE `posts`
SET `full` = REPLACE(`full`,'%src=\"http://site.ru','%src=\"https://site.ru%') |  
	
 
то есть был переход на https и нужно все картинки в контенте заменить, но почему не находит ни под каким предлогом.
 
	
 
	| Код: |  
	| UPDATE `posts`
SET `full` = REPLACE(`full`,'%src="http://site.ru','%src="https://site.ru%') |  
	
 
	
 
	| Код: |  
	| UPDATE `posts`
SET `full` = REPLACE(`full`,'%src='http://site.ru','%src='https://site.ru%') |  
	
 
В БД это выглядит так: "src="http://site.ru/images"
 
Кстати вот этот запрос выводит больше ста записей:
 
	
 
	| Код: |  
	| SELECT * FROM `posts` WHERE full like '%src=\"http://site%' |  
	
 |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 13:35
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Duda.Ml1986@gmail.com |  
	| В БД это выглядит так: "src="http://site.ru/images" |  
	
 Если так, то почему ищется '%src="http://site.ru'? REPLACE это просто поиск строки к REGEXP отношения не имеющий. RLIKE (REGEXP) нужно использовать. |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 14:02
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 01.09.2011 
						Сообщений: 263
					 
		
 |  |  
	| Можете привести пример пожалйста |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 15:19
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| В MySQL нет функции preg_replace, только строковой заменой: 
UPDATE table SET field = REPLACE(field, SUBSTRING_INDEX(field, 'replace_tetx', 1), SUBSTRING_INDEX(field, 'search_tetx', 1))
 
Если домен и постоянство, значит хватит, нет, значит нужно добавлять REGEXP. |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 16:03
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 01.09.2011 
						Сообщений: 263
					 
		
 |  |  
	| Не работает. Обрезает строку неправильно |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 16:14
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Известны такие вещи как процедуры и функции? Иначе дам ссылку на известную уже функцию для этой операции, но пояснять что к чему некогда, по крайней мере сегодня. |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 16:47
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 01.09.2011 
						Сообщений: 263
					 
		
 |  |  
	| Я понял, в любом случае спасибо, самому пора сильнее извилины напрягать)) |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 21:49
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Самому всегда придется. Я к тому, что если в курсе, то взяли и используем, а не насилуем SQL от непонимания.
 Можно пример приведенный дополнить условием WHERE REGEXP(pattern), который будет искать необходимое для замены, да и ускорит процесс отсеивая лишнее. Выражения MySQL REGEXP доступны в сети, их не так много, чтобы запутаться в них.
 			 Последний раз редактировалось laimas, 12.06.2015 в 01:21.
 |  |  
	| 
		
	| 
			
			 
			
				11.06.2015, 22:48
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 13.03.2013 
						Сообщений: 1,572
					 
		
 |  |  
	| Duda.Ml1986@gmail.com,выгрузи таблицу в sql, открой в Notepad++, замени как надо. Загрузи обратно, пару минут работы
 |  |  
	| 
		
	| 
			
			 
			
				12.06.2015, 01:25
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Poznakomlus |  
	| выгрузи таблицу в sql, открой в Notepad++, замени как надо. Загрузи обратно |  
	
 А если это не содержанием определяется, а формируемые и вставляемые в содержание ссылки, то вообще не стоит такое держать в базе. ) |  |  |  |