Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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?
-
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:
- Proč jsou velikosti písma v databázi? To mají řešit šablony.
- Proč jsou navíc v pixelech? Na FullHD mobilu tohle už nikdo nepřečte.
-
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
-
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
-
no ... tomu bych se rad vyhl...
-
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.
-
A co třeba v té tabulce mít namísto sloupce content sloupec fontsize, což by byl jednoduše integer, hej? :)
-
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.
-
MySQL umožňuje napsat UDF v C. Je to celkem jednoduché.
-
Ahoj,
pokud to ma byt jednorazove, jde to udelat pres export, upravu a import. Co treba neco jako:
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.