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.