Autor | Zpráva | ||
---|---|---|---|
Casper Profil |
#1 · Zasláno: 3. 4. 2010, 19:21:18
Dobrý den, mám dotaz zda lze provést hromadné nahrazení v databázi pomocí regulárního výrazu. Mám sloupec, kde se mi opakuje část textu a následují další znaky:
textněco textněcodalšího textazasněco a nyní potřebuji nahradit onen string(text) něčím jiným(např.zmena) přičemž ponechat vše co následuje za ním. Aby vzniklo něco takového: zmenaněco zmenaněcodalšího zmenaazasněco Jako řešení mě napadlo nejprve vybrat mnou požadované záznamy a následně je zpracovat v php a zpětně updatovat v db. To není problém, rád bych však věděl řešení v SQL. Předem děkuji za odpověď |
||
Kajman_ Profil * |
#2 · Zasláno: 3. 4. 2010, 21:27:56
Mysql umí jen obyčejné replace...
update tabulka set sloupec=replace(sloupec,'text','zmena') |
||
Casper Profil |
#3 · Zasláno: 3. 4. 2010, 22:06:55
Takže v tomto případě nelze zakomponovat nějaký regulární výraz a využít jeho zpětných referencí pro přesné přejmenování části stringu ve sloupci ?
myslel jsem, že by to mohlo jít nějak takto: mysql_query(UPDATE tabulka SET sloupec = REPLACE(sloupec , REGEXP 'text(.*?)', 'zmena$1')); Ovšem vůbec nemám zkušenosti s regulárními výrazy v takovýchto SQL dotazech, byl bych i vděčný za nějaký link (čj/aj) srovnávající využívání regulárních výrazů v php/sql. Popřípadě možnosti využití regulárů v SQL dotazech (i jiné než obyčejné SELECTy). Popřípadě by stačilo vysvětlit, jak (a zda) se využívá zpětných referencí regulárů v SQL. :) |
||
Kajman_ Profil * |
#4 · Zasláno: 3. 4. 2010, 23:17:52
|
||
Casper Profil |
#5 · Zasláno: 4. 4. 2010, 11:28:26
Děkuji, to jsem chtěl vědět. O obyčejném REGEXPu samozřejmě vím, čekal jsem však, že jeho funkce by mohli mít širší využití například v podobných příkladech jako je tento...
|
||
sysel Profil |
#6 · Zasláno: 6. 4. 2010, 04:46:10
Kajman:
„ale nezkontroluje, že je 'text' na začátku“ ... což by snad šlo provést i pomocí regexpu v podmínce WHERE ... |
||
Časová prodleva: 14 let
|
0