Vediamo come utilizzare la funzione String_Split in SQL Server per dividere una stringa in una riga di sottostringhe in base a un separatore specificato.
Gli utenti di SQL Server in genere necessitano di funzioni di analisi e modifica delle stringhe. In diversi scenari, questa operazione di analisi o modifica delle stringhe può essere complicata per gli sviluppatori o gli amministratori di database.
Per questo motivo, a partire da SQL Server 2016, Microsoft ha annunciato nuove funzioni come STRING_ESCAPE, STRING_SPLIT sono state aggiunte in SQL Server 2016 e le funzioni stringa CONCAT_WS, STRING_AGG, TRANSLATE e TRIM sono state aggiunte a SQL Server 2017.
In questo articolo, discuteremo la funzione STRING_SPLIT in SQL Server, in particolare. Lo scopo di questa funzione stringa integrata è convertire le matrici di stringhe in colonne separate da qualsiasi separatore. La figura seguente illustra l’idea principale di questa funzione.
Questa funzione è stata introdotta in SQL Server 2016 e le versioni precedenti di SQL Server non supportano questa funzione predefinita. In altre parole, questa funzione non è supportata sotto il livello di compatibilità 130.
Sommario
Sintassi funzione String_Split in Sql Server
La sintassi è molto semplice in quanto questa funzione integrata con valori di tabella accetta solo due parametri. Il primo è una stringa e il secondo è un singolo carattere
STRING_SPLIT ( input_string , separator )
Nella sintassi seguente:
- string: Espressione di qualsiasi tipo carattere, ad esempio nvarchar , varchar , nchar o char.
- separator: È un’ espressione a carattere singolo di qualsiasi tipo, ad esempio nvarchar, varchar, nchar o char , usata come separatore per sottostringhe concatenate.
Esempio funziona con dati:
select value from STRING_SPLIT('apple,banana,lemon,kiwi,orange,coconut',',')
Funzione STRING_SPLIT e Where Condition
Attraverso la clausola WHERE, possiamo filtrare il set di risultati della funzione STRING_SPLIT. Nella seguente istruzione select, la clausola WHERE filtra il set di risultati della funzione e restituirà solo la riga o le righe che iniziano con “le”.
select value
from
STRING_SPLIT('apple,banana,lemon,kiwi,orange,coconut',',')
WHERE value LIKE 'le%'
Inoltre, possiamo usare la funzione in questa forma:
USE AdventureWorks2014
GO
select * from HumanResources.Employee
WHERE [jobtitle] IN
(select value from string_split('Chief Executive Officer , Design Engineer',','))
Funzione STRING_SPLIT e Order BY
Un altro requisito di cui abbiamo bisogno nelle istruzioni SELECT è la funzionalità di ordinamento. Possiamo ordinare l’output di questa funzione che assomiglia alle altre istruzioni T-SQL.
select value from STRING_SPLIT('apple,banana,lemon,kiwi,orange,coconut',',')
order by value
Nota: su alcuni feedback in SQL Server, mi sono imbattuto in un suggerimento sulla funzione STRING_SPLIT che è “La nuova funzione di divisione delle stringhe in SQL Server 2016 ha bisogno di una colonna aggiuntiva, una colonna ListOrder che denota l’ordine dei valori divisi”.
Funzione STRING_SPLIT e JOIN
È possibile combinare il risultato della funzione impostato sull’altra tabella con la clausola JOIN.
USE [AdventureWorks2014]
GO
SELECT
[PersonType]
,[NameStyle]
,[FirstName]
,[MiddleName]
,[LastName]
FROM [Person].[Person] P
INNER JOIN string_split('Ken,Terri,Gail',',')
on P.FirstName=value
Inoltre, possiamo usare la funzione CROSS APPLY per combinare il set di STRING_SPLIT funzione con altre tabelle. CROSS APPLY ci consente di unire l’output della funzione valore tabella ad altre tabelle.
Conclusione
Abbiamo visto come utilizzare la funzione String_Split in Sql Server.
Leggi le altre guide su Sql Server presenti in questo blog: