Nimmt eine Zeichenfolge von durch einen Begrenzer getrennten Werten und gibt eine Reihe von Zeilen zurück, wobei eine Zeile für jeden Wert steht
sa_split_list( Zeichenfolge [, Begrenzer ] [, max_Länge ] )
Zeichenfolge Verwenden Sie diesen LONG VARCHAR-Parameter, um die Zeichenfolge anzugeben, die die aufzuteilenden und durch Begrenzer getrennten Werte enthält.
Begrenzer Verwenden Sie diesen optionalen CHAR(10)-Parameter, um den Begrenzer anzugeben, der in Zeichenfolge zum Trennen der Werte verwendet werden soll. Der Begrenzer kann eine Zeichenfolge aus beliebigen Zeichen sein (bis zu 10 Byte). Wenn kein Begrenzer angegeben ist, wird standardmäßig ein Komma verwendet.
max_Länge Verwenden Sie diesen optionalen INTEGER-Parameter, um die Maximallänge der zurückgegebenen Werte anzugeben. Beispiel: Wenn max_Länge auf 3 gesetzt ist, werden die Werte in den Ergebnissen auf die Länge von 3 Zeichen gekürzt. Wenn Sie 0 angeben (Standardwert), können Werte von beliebiger Länge sein.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
line_num | INTEGER | Sequenzielle Nummer für die Zeile |
row_value | LONG VARCHAR | Wert aus der Zeichenfolge, ggf. auf max_Länge gekürzt |
Die Prozedur sa_split_list akzeptiert eine Zeichenfolge mit einer begrenzten Liste von Werten und gibt eine Ergebnismenge mit einem Wert pro Zeile zurück. Dies ist das Gegenteil der Aktion, die durch die LIST-Funktion [Aggregate] ausgelöst wird. Eine leere Zeichenfolge wird für row_value zurückgegeben, wenn für die Zeichenfolge Folgendes gilt:
Ein Leerzeichen in der Eingabe-Zeichenfolge ist signifikant. Wenn der Begrenzer ein Leerzeichen ist und in der Eingabe-Zeichenfolge zusätzliche Leerzeichen stehen, werden in der Ergebnismenge zusätzliche Zeilen eingefügt. Wenn der Begrenzer kein Leerzeichen ist, werden Leerzeichen in der Eingabe-Zeichenfolge aus den Werten in der Ergebnismenge nicht entfernt.
Keine
Keine
Die folgende Abfrage gibt eine Liste von Produkten mit schwarzer Farbe zurück.
SELECT list( Name ) FROM Products WHERE Color = 'Black'; |
list (Products.Name) |
---|
Tee Shirt,Baseball Cap,Visor,Shorts |
Im folgenden Beispiel wird die Prozedur sa_split_list benutzt, um die ursprüngliche Ergebnismenge aus der zusammengestellten Liste zu entfernen.
SELECT * FROM sa_split_list( 'Tee Shirt,Baseball Cap,Visor,Shorts' ); |
line_num | row_value |
---|---|
1 | Tee Shirt |
2 | Baseball Cap |
3 | Visor |
4 | Shorts |
Das folgende Beispiel gibt eine Zeile für jedes Wort zurück. Um eine Rückgabe von Wörtern zu vermeiden, wenn row_value eine leere Zeichenfolge ist, muss die WHERE-Klausel angegeben werden.
SELECT * FROM sa_split_list( 'one||three|four||six|', '|' ) WHERE row_value <> ''; |
line_num | row_value |
---|---|
1 | one |
3 | three |
4 | four |
6 | six |
Im folgenden Beispiel wird eine Prozedur namens "ProductsWithColor" erstellt. Wenn sie aufgerufen wird, verwendet die ProductsWithColor-Prozedur sa_split_list, um die vom Benutzer angegebenen Farbenwerte syntaktisch zu analysieren, überprüft die Color-Spalte der Products-Tabelle und gibt Namen, Beschreibung, Größe und Farbe für jedes Produkt zurück, das einer der vom Benutzer angegebenen Farben entspricht.
Das Ergebnis des untenstehenden Prozeduraufrufs besteht aus Namen, Beschreibung, Größe und Farbe aller Produkte, die entweder weiß oder schwarz sind.
CREATE PROCEDURE ProductsWithColor( IN color_list LONG VARCHAR ) BEGIN SELECT Name, Description, Size, Color FROM Products WHERE Color IN ( SELECT row_value FROM sa_split_list( color_list ) ) END; go SELECT * from ProductsWithColor( 'white,black' ); |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |