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.
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:
$results = mysql_query("SELECT id, mezo FROM tabla WHERE mezo REGEXP '[[:<:]]táb'");
while ($result = mysql_fetch_object($results)) {
  $result->mezo = preg_replace('/(^|\b)táb[^\b]+/', 'tábla', $result->mezo);
  mysql_query(sprintf("UPDATE tabla SET mezo = '%s' WHERE id = %d",
    mysql_real_escape_string($result->mezo), $result->id));
}
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! :-)