Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wybrać część zawartości pola (do kropki)
Forum PHP.pl > Forum > Bazy danych > MySQL
xPatryk
Witam,

w jaki sposób najprościej (najoptymalniej) wybrać tekst z pola typu "text" z bazy MySQL, ale tak, by wyświetlić max 255 znaków, ale przerwać po kropce (koniec zdania a nie połowa wyrazu?)

Nie chciałbym czytać go po znaku i liczyć kropek...

Pozdrawiam i proszę o pomoc...
Kas
Możesz pobrać cały tekst.
Następnie znaleźć kropkę i wyświetlić tekst do kropki + kropka.
xPatryk
hm... znalezienie kropki wymagaloby przczytania calego tekstu znak po znaku i porownania kazdego znaku z kropka, prawada?

Wiem, że jest jakaś inna metoda, kiedyś nawet jej używałem ale nigdzie nie mogę znaleźć tamtego pliku a z forum php.pl tamten wątek już zniknął sad.gif

Pozdrawiam
Patryk
Kas
Chwilowo nie mam innego pomysłu.
Ale może coś wymyślę...

Proponuję poszukaj w manualu.
crash
Podkreślam, że nigdy wcześniej nie używałem tych funkcji. Wszystko wydedukowałem w pare minut z manuala MySQL. LENIE!

  1. SELECT substring( pole, 1, 255 + position( "." IN substring( pole, 255 ) ) )
  2. FROM tabela;

Tylko to pobiera 255 znaków + dokończenie zdania... Chcesz więcej - kombinuj.
cahe
strpos a potem substr -> manual

edit: o ktoś mnie ubiegł ;>
mrowa
Cytat
select substring( pole, 1, 255 + position( "." in substring( pole, 255 ) ) )
from tabela;


jest ok, ale pokaze minimum 255 znakow plus n* znakow do wystapienia pierwszej kropki po pierwszych 255 znakach

moze lepsze bedzie to:
  1. SELECT substring( text,1,position("." IN substring(text,1,255)) )
  2. FROM tabela

pokaze maksymalnie 255 obcinajac tekst do wystapienia pierwszej kropki w pierwszych 255 znakach


albo
  1. SELECT substring( pole ,1,255 - position("." IN reverse(substring(text,1,255)))+1 )
  2. FROM tabela

pokaze maksymalnie 255 obcinajac tekst do wystapienia ostatniej kropki w pierwszych 255 znakach


albo
  1. SELECT
  2. case
  3. when position("." IN pole) < 255
  4. then substring(pole,1,position("." IN substring(pole,1,255)) )
  5. else concat(substring(pole,1,255 - 4 ),' ...')
  6. end
  7. FROM tabela

pokaze maksymalnie 255 obcinajac tekst do wystapienia pierwszej kropki w pierwszych 255 znakach, jezeli w pierwszych 255 znakach nie ma kropki, pokaze 255 - 4 znakow + ' ...'

itd..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.