Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come inserire una stringa in un'altra stringa in SQL Server usando STUFF()

In SQL Server, puoi usare T-SQL STUFF() funzione per inserire una stringa in un'altra stringa. Ciò ti consente di fare cose come inserire una parola in una posizione specifica. Ti permette anche di sostituire una parola in una posizione specifica.

Ecco la sintassi ufficiale:

STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression è la stringa originale. Può essere effettivamente una costante, una variabile o una colonna di dati caratteri o binari.
  • start specifica la posizione iniziale (ovvero dove verrà inserita la nuova stringa).
  • length indica quanti caratteri devono essere eliminati dalla stringa originale.
  • replaceWith_expression è la stringa che viene inserita. replaceWith_expression può essere una costante, una variabile o una colonna di dati caratteri o binari.

Sostituisci una parola

Ecco un esempio in cui sostituisco una parola all'interno di una stringa.

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

Risultato:

Cats like dogs

In questo caso, specifico che la parola like deve essere inserito alla posizione 6, e che 3 caratteri devono essere cancellati dalla stringa originale (questo elimina la parola and ). Quindi la parola and viene cancellato e la parola like è inserito.

Inserisci una parola

Ecco un esempio di inserimento di una parola senza eliminare nulla dalla stringa originale:

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

Risultato:

Cats and big dogs

Nulla viene eliminato dalla stringa originale perché ho specificato 0 come terzo argomento.

Valori fuori intervallo

Se la posizione iniziale è al di fuori della lunghezza della stringa originale, viene restituito un valore NULL.

Esempio:

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

Risultato:

NULL

In questo caso, la stringa originale non è lunga 20 caratteri, quindi il risultato è NULL .

La stessa cosa accade se fornisci 0 o un numero negativo:

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

Risultato:

NULL

Il risultato di questi esempi è in contrasto con INSERT() di MySQL funzione, che avrebbe restituito la stringa originale in questo scenario. INSERT() di MySQL fa sostanzialmente la stessa cosa di STUFF() di T-SQL (tranne casi come questi).

Inserimento di valori NULL

Se inserisci un valore NULL, il tuo risultato rimuoverà semplicemente il numero di caratteri indicato dalla posizione indicata. In altre parole, non viene inserito nulla, ma i caratteri vengono comunque rimossi come specificato.

Esempio:

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

Risultato:

Cats dogs

Questa è un'altra area in cui MySQL differisce da T-SQL. Fare questo esempio con INSERT() di MySQL la funzione avrebbe restituito un risultato di NULL .