ugrás a tartalomhoz

MySql - Keresés, csere

simisoma · 2009. Jan. 7. (Sze), 21.31
Sziasztok!

Lenne egy olyan kérdésem, hogy MySql paranccsal egy rekordban lévő tartalmi részre keressünk és azt cseréljük másra.

Pl.: tábor --> tábla vagy az összes táb -al kezdődő szót cserélje ki táblára (táb* --> tábla)

Köszönöm!
 
1

REPLACE

Poetro · 2009. Jan. 7. (Sze), 22.35
Létezik a replace parancs, csak az a probléma vele, hogy a te kérdésedre nem ad teljes választ, és a MySQLben sajnos nem kifejezetten bő a reguláris kifejezések lehetősége.
  1. UPDATE tabla SET mezo = REPLACE(mezo, 'tabor''tabla'WHERE mezo REGEXP '[[:<:]]tabor';  
Ez kicseréli a kettő szót, ha pontosan ebben a formában szerepel a szó.
Ennél lehet kicsit szofisztikáltabban, pl az általad írt teljes szó cseréje, csak az sokkal tovább tart, mert meg kell keresni a szóhatárokat a szó kezdése után, ráadásul így csak egyetlen formát fog csak cserélni, ha más a szó végződése azt nem.
Valószínűleg sokkal optimálisabb kikeresni azokat a mezőket amikben szerepel a szó, és valamely programozási nyelven megejteni a cserét, majd azután frissíteni a mezőket az adatbázisban. Fejlettebb adatbázismotorok esetén, pl. PostgreSQL vagy Oracle, a belső scriptnyelvvel valószínűleg sokkal egyszerűbben meg lehet ezt oldani, a MySQL erre nem képes optimálisan.
2

PHPban

Poetro · 2009. Jan. 8. (Cs), 01.08
Csak hogy példával illusztráljam a megoldásomat:
  1. $results = mysql_query("SELECT id, mezo FROM tabla WHERE mezo REGEXP '[[:<:]]táb'");  
  2. while ($result = mysql_fetch_object($results)) {  
  3.   $result->mezo = preg_replace('/(^|\b)táb[^\b]+/''tábla'$result->mezo);  
  4.   mysql_query(sprintf("UPDATE tabla SET mezo = '%s' WHERE id = %d",  
  5.     mysql_real_escape_string($result->mezo), $result->id));  
  6. }  
4

sprintf , mysql_real_escape_string

simisoma · 2009. Jan. 8. (Cs), 07.20
Lenne egy olyan kérdésem, hogy a

sprintf parancs mit takar illetve a %s, %d

illetve

mysql_real_escape_string ennek a parancsnak a működése is érdekelne

nem ismerem ezt a két parancsot.

Köszönöm!
5

RTFM

zila · 2009. Jan. 8. (Cs), 10.49
Van jó php manual, mindkét függvény benne van (sok másikkal együtt :)
3

Köszönet!

simisoma · 2009. Jan. 8. (Cs), 07.02
Köszönöm, a gyors választ! :-)