|
str_replace()
Die
String Funktion
str_replace()
ersetzt in einer beliebigen Zeichenfolge, alle vorkommenden
Teilzeichenfolgen mit einer alternativen Zeichenfolge. Die entsprechenden
Zeichenfolgen werden in den Parametern der Funktion definiert.
Dabei müssen alle drei Zeichenfolgen vom selben
Datentyp
sein. Für die entsprechenden Rückgabewerte gilt:
-
Ist eine der drei Zeichenfolgen vom Datentyp
char
oder
varchar,
so ist der Rückgabewert vom Datentyp varchar.
-
Ist eine der drei Zeichenfolgen vom Datentyp
unichar
oder
univarchar,
so ist der Rückgabewert vom Datentyp univarchar.
-
Ist eine der drei Zeichenfolgen vom Datentyp
binary
oder
varbinary,
so ist der Rückgabewert vom Datentyp varbinary.
Eine leere Zeichenfolge ("") wird vom
ASE
automatisch in eine Zeichenfolge mit einem Leerzeichen umgewandelt,
um den leeren String von
NULL-Werten
zu unterscheiden.
Wenn eine der drei Zeichenfolgen mit NULL spezifiziert wird, so
lieferte ASE bis zur Version 12.5.0.3 als Ergebnis auch NULL zurück.
Seit Version 12.5.1 hat sich dies geändert. Seither ist der Wert NULL
für den dritten Parameter gesondert belegt und liefert nicht mehr NULL,
sondern eliminiert alle vokommenden Werte des zweiten Parameters aus
dem Wert, der im ersten Parameter definiert wurde. Siehe auch
"Beispiel" weiter unten.
Die Länge der resultierenden Zeichenfolge kann unterschiedlich sein,
abhängig davon, was über die Parameterwerte zur
Kompilierungszeit
bekannt ist:
-
Sind alle drei Parameter mit
Variablen
konstanter und bekannter Länge belegt, berechnet ASE die Länge der
resultierenden Zeichenkette als:
Ergebnis_Länge = ((u/s)*(e-s)+u)
wobei
u = Länge der Ursprungszeichenfolge
s = Länge des Suchmusters
e = Länge der Ersatzzeichenfolge
ist.
Falls (e-s) kleiner oder gleich 0 ist, ist die Ergebnislänge gleich u.
-
Dieselbe Formel wird genutzt, wenn die Ursprungszeichenfolge ein
Spaltenname
ist, und die anderen beiden Zeichenfolgen aus
Konstanten
bestehen, die zur Kompilierungszeit bekannt sind.
-
Wenn ASE nicht in der Lage ist, die Länge der Ergebniszeichenkette
zu berechnen, weil die Werte der Parameter zur Kompilierungszeit
unbekannt sind, wird eine Standardlänge von 255 angenommen, ausser
Traceflag
244 ist gesetzt, dann erhöht sich dieser Wert auf 16384. Das ist aber
auch gleichzeitig der Maximalwert.
str_replace() ist eine
T-SQL
Erweiterung, die von jedem
User
ausgeführt werden kann.
Syntax der String Funktion str_replace()
str_replace( string_expression_1, string_expression_2, string_expression_3)
Die Parameter der String Funktion str_replace()
"string_expression_1"
Der Parameter "string_expression_1" ist die Ursprungszeichenkette,
also die Zeichenkette, die mit der Funktion str_replace durchsucht
werden soll.
Der Parameter muss in einfache oder doppelte Anführungsstriche gesetzt
werden. Er kann aus
Spaltennamen,
Variablen
oder
Konstanten
bestehen und muss in einem der
Datentypen
char,
varchar,
unichar,
univarchar,
varbinary
oder
binary
ausgedrückt werden.
Wird dieser Parameter mit
NULL
spezifiziert, so ist der Rückgabewert der Funktion ebenfalls NULL.
"string_expression_2"
Der Parameter "string_expression_2" entspricht dem
Suchmuster, das in der Ursprungszeichenkette ("string_expression_1")
gefunden werden soll.
Der Parameter muss in einfache oder doppelte Anführungsstriche gesetzt
werden. Er kann aus
Spaltennamen,
Variablen
oder
Konstanten
bestehen und muss in einem der
Datentypen
char,
varchar,
unichar,
univarchar,
varbinary
oder
binary
ausgedrückt werden.
Wird dieser Parameter mit
NULL
spezifiziert, so ist der Rückgabewert der Funktion ebenfalls NULL.
"string_expression_3"
Der Parameter "string_expression_3" ist die Ersetzungszeichenkette,
durch die alle Vorkommnisse des Suchmusters ("string_expression_2")
in der Ursprungszeichenkette ("string_expression_1") ersetzt werden.
Der Parameter muss in einfache oder doppelte Anführungsstriche gesetzt
werden. Er kann aus
Spaltennamen,
Variablen
oder
Konstanten
bestehen und muss in einem der
Datentypen
char,
varchar,
unichar,
univarchar,
varbinary
oder
binary
ausgedrückt werden.
Wird dieser Parameter mit
NULL
spezifiziert, so werden alle gefundenen Muster der zu suchenden Zeichenkette
("string_expression_2") gelöscht.
Beispiel für die String Funktion str_replace()
select str_replace ("uvwxyzx","x","a")
go
-------
uvwayza
Im Rückgabewert sind alle "x" der Zeichenkette "uvwxyzx"
durch "a" ersetzt worden.
select str_replace ("uvwxyzx","x",NULL)
----------
uvwyz
Im Rückgabewert sind alle "x" der Zeichenkette "uvwxyzx"
gelöscht worden.
Siehe auch:
ascii(), char(), char(n), charindex(), char_length(), compare(), difference(), lower(), ltrim(), patindex(), replicate(), reverse(), right(), rtrim(), sortkey(), soundex(), space(), str(), String Funktionen, stuff(), substring(), to_unichar(), uhighsurr(), ulowsurr(), upper(), uscalar().
|