SQL dotaz pro změnu písma

Pavel1

SQL dotaz pro změnu písma
« kdy: 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?
« Poslední změna: 18. 05. 2014, 23:18:03 od Petr Krčmář »


Sten

Re:SQL dotaz - uprava retezce
« Odpověď #1 kdy: 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:
  • 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.

Pavel1

Re:SQL dotaz - uprava retezce
« Odpověď #2 kdy: 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

Re:SQL dotaz - uprava retezce
« Odpověď #3 kdy: 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
Děkuji za možnost editace příspěvku.

Pavel1

Re:SQL dotaz - uprava retezce
« Odpověď #4 kdy: 16. 05. 2014, 17:41:04 »
no ... tomu bych se rad vyhl...


Sten

Re:SQL dotaz - uprava retezce
« Odpověď #5 kdy: 16. 05. 2014, 18:12:56 »
MySQL nemá replace s regulárním výrazem, ale existuje rozšíření, které to umí. 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.

Natix

Re:SQL dotaz - uprava retezce
« Odpověď #6 kdy: 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?  :)

Tonda

  • *****
  • 693
    • Zobrazit profil
    • E-mail
Re:SQL dotaz - uprava retezce
« Odpověď #7 kdy: 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.

borekz

Re:SQL dotaz - uprava retezce
« Odpověď #8 kdy: 18. 05. 2014, 14:16:14 »
MySQL umožňuje napsat UDF v C. Je to celkem jednoduché.

Honza

Re:SQL dotaz - uprava retezce
« Odpověď #9 kdy: 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.