Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So fügen Sie in SQL Server eine Zeichenfolge mit STUFF () in eine andere Zeichenfolge ein

In SQL Server können Sie T-SQL STUFF() verwenden Funktion zum Einfügen einer Zeichenfolge in eine andere Zeichenfolge. Dadurch können Sie beispielsweise ein Wort an einer bestimmten Position einfügen. Außerdem können Sie ein Wort an einer bestimmten Position ersetzen.

Hier ist die offizielle Syntax:

STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression ist die ursprüngliche Zeichenfolge. Dabei kann es sich tatsächlich um eine Konstante, Variable oder Spalte mit Zeichen- oder Binärdaten handeln.
  • start gibt die Startposition an (d. h. wo der neue String eingefügt wird).
  • length ist, wie viele Zeichen aus der ursprünglichen Zeichenkette gelöscht werden sollen.
  • replaceWith_expression ist die Zeichenfolge, die eingefügt wird. replaceWith_expression kann eine Konstante, Variable oder Spalte mit Zeichen- oder Binärdaten sein.

Ein Wort ersetzen

Hier ist ein Beispiel, wo ich ein Wort innerhalb einer Zeichenfolge ersetze.

SELECT STUFF('Cats and dogs', 6, 3, 'like');

Ergebnis:

Cats like dogs

In diesem Fall gebe ich das Wort like an an Position 6 eingefügt werden soll, und dass 3 Zeichen aus der ursprünglichen Zeichenfolge gelöscht werden sollen (dadurch werden die Wörter and gelöscht ). Also das Wort and gelöscht und das Wort like eingefügt wird.

Fügen Sie ein Wort ein

Hier ist ein Beispiel für das Einfügen eines Wortes, ohne etwas aus der ursprünglichen Zeichenfolge zu löschen:

SELECT STUFF('Cats and dogs', 10, 0, 'big ');

Ergebnis:

Cats and big dogs

Aus der ursprünglichen Zeichenfolge wird nichts gelöscht, weil ich 0 angegeben habe als drittes Argument.

Werte außerhalb des zulässigen Bereichs

Wenn die Startposition außerhalb der Länge des ursprünglichen Strings liegt, wird ein NULL-Wert zurückgegeben.

Beispiel:

SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');

Ergebnis:

NULL

In diesem Fall ist die ursprüngliche Zeichenfolge nicht 20 Zeichen lang, daher ist das Ergebnis NULL .

Dasselbe passiert, wenn Sie 0 angeben oder eine negative Zahl:

SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');

Ergebnis:

NULL

Das Ergebnis dieser Beispiele steht im Gegensatz zu INSERT() von MySQL -Funktion, die in diesem Szenario die ursprüngliche Zeichenfolge zurückgegeben hätte. INSERT() von MySQL macht im Grunde dasselbe wie STUFF() von T-SQL (außer in solchen Fällen).

Einfügen von NULL-Werten

Wenn Sie einen NULL-Wert einfügen, entfernt Ihr Ergebnis einfach die angegebene Anzahl von Zeichen von der angegebenen Position. Mit anderen Worten, es wird nichts eingefügt, aber Zeichen werden trotzdem wie angegeben entfernt.

Beispiel:

SELECT STUFF('Cats and dogs', 6, 3, NULL);

Ergebnis:

Cats dogs

Dies ist ein weiterer Bereich, in dem sich MySQL von T-SQL unterscheidet. Führen Sie dieses Beispiel mit INSERT() von MySQL durch Funktion hätte ein Ergebnis von NULL zurückgegeben .