Autor Zpráva
Enko
Profil
Ahoj,
mám tabulku a v jednom sloupci je text v tomto formátu: "nějakýtext\nnějakýtext\nnějakýtext\nnějakýtext"
a potřebuji všechny \n nahradit například za <br>. Zkoušel jsem to přes funkci Replace() viz tento příklad:
Update `tabulka`
SET description = replace(description, '\n', '<br>')
where id_product='8338'

Ale vrátí mi to 0 ovlivněných řádků, kterých tam mám cca 8, odpovídající této podmínce. Lze toto provést nějakým způsobem v MySQL?
juriad_
Profil *
Id_product je predpokladam INT. Takze hodnotu v podmince nepis s apostrofy.
To ze mysql nekdy zvladne automatickou konverzi neznamena, ze muzes VARCHAR a INT volne zamenovat.
Enko
Profil
Tak nefunguje. Dotaz dávám jenom takto:
Update `tabulka`
SET description = replace(description, '\n', '<br>')

Sloupec description je tipu "text"
Kajman
Profil
Dotaz vypadá korektně. Podívejte se např. v hexa zobrazení dat, zda tam je opravdu nový řádek \n a není tam např. jen zbylý návrat \r.

A pokud ten dotaz nespouštíte přímo, ale např. přes nějaký programovací jazyk jako string, tak ho nezapomeňte escapovat... aby se zpětné lomítko ošetřilo a zachovalo až pro mysql.
Enko
Profil
Tak vyřešeno, sice už jsem měl z 95% napsaný PHP script, který by to udělal, ale bylo to tím escapováním.
Výsledný a funkční SQL dotaz vypadá takto:
Update `tabulka` 
SET description = replace(description, '\\n', '<br>')
Děkuji juriadovi za informaci o apostrofech, vždycky jsem na to prděl a psal skoro vždy s apostrofy.
Děkuji Kajmanovi za radu o escapování, protože to bylo tím.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0