Wortlänge (PL/SQL)

Nicht immer bietet das Design genügend Platz, um lange Wörter darzustellen. Diese Funktion erlauf es bereits in der Abfrage, Datensätze mit zu langen Wörtern auszuschließen.

create or replace function wortlaenge (soriginal in varchar2) return number is
  nlength   number(10)    := 0;
  nposstart number(10)    := 0;
  nposende  number(10)    := 1;
begin
  soriginal := trim(replace(replace(soriginal,'-','- '),'/','/ '));
  while nposende > 0 loop
    nposende := instr(soriginal,strenner,nposstart + 1);
  if nlength < nposende - nposstart then
      nlength := nposende - nposstart - 1;
  end if;
    nposstart := nposende;
  end loop;
  return nlength;
end wortlaenge;
/

Der Zugriff erfolgt so:

SELECT
  textfeld
FROM
  tabelle
WHERE
  wortlaenge(textfeld) < 20;

Angenommen, ein Datensatz in "textfeld" würde z.B. den Wert "Extremlangesnervigeswort" haben, würde dieser Datensatz nicht selektiert. Am Anfang werden "-" und "/" durch ein Leerzeichen ergänzt. Macht man selbiges später bei der Ausgabe, hat nämlich auch HTML hier die Möglichkeit, umzubrechen.