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
.