Skip to main content

Strings

Prüfen, ob ein (Teil-)String sich in einem String befindet

Die einfachste Möglichkeit, zu prüfen, ob sich in einem String ein anderer String (oder auch nur ein einzelnes Zeichen) befindet, ist die Funktion CHARINDEX.

Diese Funktion liefert die Position des Beginns des gesuchten Strings zurück. Die Zählung beginnt bei 1. Wird der String nicht gefunden, liefert die Funktion eine 0.

SELECT CHARINDEX('gar', 'Wintergarten'); -- liefert 7, weil "gar" beim 7. Buchstaben des Worts beginnt

Einen String splitten

Auch in SQL Anywhere kann man einen längeren String anhand eines gegebenen Trennzeichens splitten. Das kann nützlich sein, wenn man an eine Prozedur einen Parameter übergeben will und dieser Parameter(string) manchmal nur einen Wert repräsentiert, in anderen Fällen jedoch mehrere.

Hinweis: in SQL Anywhere kann man die Parameter für eine Prozedur nicht überladen und kann auch nicht - ohne weiteres - beliebig viele Werte in einem Parameter übergeben.

Mit Hilfe der Systemprozedur sa_split_list kann man einen Parameter anhand eines gegebenen Trennzeichens (Standard: Leerzeichen) trennen und erhält eine Tabelle mit den getrennten Werten zurück.

SELECT *
FROM sa_split_list( 'eins|zwei|drei', '|' );
line_num row_value
1 eins
2 zwei
3 drei

Im Rahmen einer Prozedur kann diese Liste dann z.B. in eine temporäre Tabelle geschrieben werden und für die weitere Auswertung mit anderen Daten gejoint werden.