Bizonyos számú karakter lekérése egy mezőből
Hello
Van egy tábla, abban egy leírás mező. A mező típusa longtext.
Lehet írni olyan lekérést, hogy a leírás mező tartalmából csak 100 karaktert kérjen le,e ne pedig az egész szöveget ami benne van?
■ Van egy tábla, abban egy leírás mező. A mező típusa longtext.
Lehet írni olyan lekérést, hogy a leírás mező tartalmából csak 100 karaktert kérjen le,e ne pedig az egész szöveget ami benne van?
Ne haragudj, de hol kerested?
(egyébként lehet)
Próbáljuk másképp...
Például:
Más: Ha a karakterek száma fixen maximum száz lehet, akkor hatékonyabb ha már eleve úgy kerül be az adatbázisba.
Viszont, ha tartalom levágást akarsz csinálni (bevezető, teljes tartalom), akkor azt általában egy <!-- break --> ill. oldaltörés jelzi.
Gyors példa:
Daniel.
Pazarlás
Mivel a LONGTEXT 4 GB (!) is lehet, méghozzá rekordonként, bődületes erőforráspazarlás 100 karakterért lekérni mindet. Ha már trükközni akarsz pl. nem
<!-- break -->
-el, hanem szóvégi levágással, akkor használd előbb pkadam (3-as komment) megoldását pl. 200 karakterre, utána játssz vele a PHP-val.A másik, hogy mivel valószínű (igen ajánlott) UTF-8 karakterkészleten van a cucc, a te fv-eid nem lesznek jók, hanem az
mb_...
megfelelőjük (többájtos karakterlánc fv-ek).A longtext nekem eleve furcsa, a leghosszabb WL cikk is befér (teljes HTML) egy TEXT-be is, ami csak 64K.
Szóval amit írtál, az ilyen megoldásokkal lehet közepes látogatottságnál és rekordszámnál is gyorsan letérdeltetni a szervert...
Jobb úgy közelíteni a dolgokhoz, hogy az SQL szervertől máris csak a nagyjából szükséges adathalmaz kerüljön PHP feldolgozás alá, és itt is a lehető legkevesebb műveletszámmal már menjen is kifelé a HTML. Rekordonként akár 4 gigát betölteni 100 karakter helyett - enyhén szólva nem nagyjából annyi...
SUBSTR()
SUBSTRING()
(vagy rövidebbenSUBSTR()
) függvény lesz a segítségedre. Első paramétere a bemeneti sztring, a második a kezdő pozíció (0-val indul), a harmadik pedig a hossz. Például a Te esetedben:Hello pkadam! Akkor csak ezt
Akkor csak ezt kell beleraknom a lekérésbe, és akkor a mezőben lévő szövegből csak 100 karaktert vesz ki? Azt hittem a substr csak php-ban van, azt ismerem is.
Egyébként arról van szó, hogy híreket listázok ki, és nincsen rövid leírás mező, csak egy teljes leírás. És a gyüjtőoldalon ahol ki vannak listázva, oda csak pár sor kell, aztán úgyis van egy tovább link a teljes hírre. :)
Így most ugyanúgy kirakja az
Itt néztem példákat: http://www.w3resource.com/mysql/string-functions/mysql-substr-function.php
Költői kérdések
2. A levágott leírást felhasználod valahol? (Ebben a formában egyáltalán fel tudod?)
3. Ismered az
AS
kulcsszót? Tudod, miért volt benne a példámban, és hogyan tudod a hasznodra fordítani?-
Pontosabban?
Engem külön érdekelne, hogy milyen szöveges tartalom az, amihez LONGTEXT kell, ki az, aki azt végigolvassa? :)
Szerk.: ha olyasmit akarsz, mint ecrazor tippelt (bevezető, lead), akkor én erre külön oszlopot javasolnék, és minden cikk szerkesztésekor a tartalomból a kis progid generálja a kész lead-et. Ekkor lesz a leggyorsabb a megjelenítés, mert csak simán azt az oszlopot kéred le - és (szinte) mindig a megjelenítés a fontos.
Bemásolom, mi van az egyik
A szóban forgó szorzó esetében ugyanakkor csak egy átlagról van szó: valójában bizonyos kódok futtatása a mérések szerint már most is eléri a natív binárisok sebességét - bár vannak olyan tesztek is, ahol a JavaScript még mindig közel két és félszer lassabb az optimalizált C++ kódoknál. Ugyanakkor összemérhető ingadozások a mérések szerint az egyes C++ fordítók között is előfordulnak, azaz azok esetében is néhol 50-100%-kal lassabb lehet a futási sebesség, a használt eszköz függvényében.
És azt szeretném, hogy ebből az egész szövegből az első 100 karaktert vegye ki csak, ne az egész szöveget.
Ezt szépen bemásoltad... :)
Ha HTML-t tárolsz az adatbázisban, miért nem azt másolod be kódszínezővel?
Ha HTML és bekezdések (
<p>
), akkor csinálhatsz egy plusz oszlopot, amibe az első bekezdést teszed. Nem biztos, hogy 100 karakter, viszont szép lead.Ez az idézet (így) 951 karakter. Ha HTML, akkor mondjuk legyen 1000. Nem válaszoltál a kérdésre, hogy akkor minek neki LONGTEXT mező... (A TEXT mezőbe 65535 karakter / byte fér, bőven elégnek tűnik...)