A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  Sonderzeichen  sybase-tech-blog


Kategorie: ASE: Funktionen: String Funktionen

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().