Fórum Root.cz

Hlavní témata => Server => Téma založeno: Pavel1 16. 05. 2014, 16:19:10

Název: SQL dotaz pro změnu písma
Přispěvatel: Pavel1 16. 05. 2014, 16:19:10
Ahoj,

potrebuji udelat dotaz do db, ktery zmeni ve vsech clancich velikost pisma

update articles set content=replace(content,'font-size:20px','font-size:12px'); - funguje skvele....

ale ne vsechny clanky jsou psany ve 20px. Jak zmenit query, aby dotaz ve vsech font-size:XXpx; nastavil 12px?
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Sten 16. 05. 2014, 16:59:42
Který SQL server to je? Ve standardním SQL tohle udělat nejde, ale některé SQL servery podporují regulární výrazy.

Jinak tohle je neuvěřitelně špatné CMS:
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Pavel1 16. 05. 2014, 17:05:20
Je v celku jedno co je v DB proste potrebuji nahradit urcitou cast retezce o tom jak je stylovani applikovano tu resit nechci ...

Jinak se omlouvam je to dotaz pro MYSQL server
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: to_je_jedno 16. 05. 2014, 17:31:06
update articles set content=replace(content,'font-size:18px','font-size:12px');
update articles set content=replace(content,'font-size:19px','font-size:12px');
update articles set content=replace(content,'font-size:20px','font-size:12px');

 ;D
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Pavel1 16. 05. 2014, 17:41:04
no ... tomu bych se rad vyhl...
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Sten 16. 05. 2014, 18:12:56
MySQL nemá replace s regulárním výrazem, ale existuje rozšíření, které to umí (https://github.com/mysqludf/lib_mysqludf_preg). Druhá možnost je dumpnout tabulku, nahradit to pomocí sedu nebo něčeho podobného a tabulku nahrát zpět.

Btw. opravdu bych se doporučoval tam místo px dát alespoň pt nebo ještě lépe em.
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Natix 17. 05. 2014, 20:15:46
A co třeba v té tabulce mít namísto sloupce content sloupec fontsize, což by byl jednoduše integer, hej?  :)
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Tonda 18. 05. 2014, 13:28:28
Natix, tak to asi ne, CONTENT je patrně nějaký CLOB, LONG nebo jak se tento typ označuje v MySQL a v něm je kompletní HTML článku, takže sloupec FONTSIZE je úplný nesmysl. Předpokládám, že si upravíte redakční systém tak aby se toto nově nevznikalo, čili se jedná o jednorázovou záležitost. A pak skutečně nevidím problém udělat to jak radí to_je_jedno a udělat samostatný update pro každou velikost, kterou je potřeba nahradit.

A nebo si to prostě naprogramuj v PHP, Javě nebo co máš k dipozici.
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: borekz 18. 05. 2014, 14:16:14
MySQL umožňuje napsat UDF v C. Je to celkem jednoduché.
Název: Re:SQL dotaz - uprava retezce
Přispěvatel: Honza 18. 05. 2014, 14:35:37
Ahoj,
 pokud to ma byt jednorazove, jde to udelat pres export, upravu a import. Co treba neco jako:

Kód: [Vybrat]
mysqldump --opt -p <database>  > /tmp/mojedb.sql
cat /tmp/mojedb.sql | sed 's/fontsize:[0-9][0-9]px/fontsize:12px/g' > /tmp/novadb.sql
cat /tmp/novadb.sql | mysql -p <databaze>

Honza

PS: Netestoval jsem to, daval jsem to od boku, tak to prvne vyzkousej na necem neskodnym...
Jinak souhlasim spise s pouzitim sablon, ktere to resi i do budoucna.