Torna all'elenco degli articoli Articoli
Tempo di lettura: 6 minuti

5 funzioni SQL per la manipolazione delle stringhe

Le funzioni SQL utilizzate per manipolare le stringhe, comunemente chiamate funzioni stringa, sono tra gli strumenti più importanti di SQL. In questo post vedremo cinque modi per eseguire varie operazioni sulle stringhe.

Esistono molte funzioni SQL che consentono di "modificare" i dati delle stringhe. Man mano che si impara l'SQL, ci si accorge della loro utilità. Alcune funzioni SQL tagliano gli spazi o i caratteri non necessari, altre indicano la lunghezza di una stringa. Queste funzioni offrono molte opportunità di trasformare e lavorare con le stringhe, rendendo il codice più efficace. Inoltre, rendono il codice più facile da capire

.

Ogni sviluppatore SQL dovrebbe conoscere le funzioni SQL utilizzate per manipolare le stringhe. In questo post vi spiegherò cinque funzioni comuni per le stringhe in SQL

.

Funzioni SQL per le stringhe: CONCAT

CONCAT(first_char, second_char, ... n_char)

La funzione stringa SQL CONCAT combina due o più stringhe in un'unica stringa. Tutti gli input di entry_char

devono essere di tipo CHAR, VARCHAR o NCHAR.

Ho scritto due semplici esempi che mostrano l'utilità di questo comando:

SELECT CONCAT ('LearnSQL is good', ' and great', ' and fantastic!') 
FROM DUAL;
--------------------

LearnSQL is good and great and fantastic!

Come si può vedere, CONCAT ha preso le tre stringhe che ho inserito - 1) 'LearnSQL is good'; 2) 'and great'; 3) 'and fantastic!' - e le ha combinate in una nuova stringa SQL

. Questa tecnica è molto utile quando si vogliono presentare le informazioni del database in modo leggibile.

Supponiamo di avere una tabella chiamata patient che memorizza i numeri identificativi, i nomi, le date di ricovero e le malattie dei pazienti. Vogliamo visualizzare i dati di ciascun paziente nel modo più comprensibile possibile. L'opzione migliore è quella di creare una frase, come mostrato di seguito:

SELECT CONCAT(name, ' was admitted to St. Ann's Hospital on ', date, ' with ', illness) 
FROM patient
WHERE patient_id = 447;
------------------

John Doe was admitted to St. Ann’s Hospital on 21-11-2016 with flu.

In molti sistemi di database, la funzione stringa di CONCAT SQL può essere sostituita dal simbolo di concatenazione di stringhe "||". Questo operatore è compatibile con gli standard SQL, ma non funziona in tutti i database: ad esempio, in SQL Server è necessario utilizzare "+".

Funzioni stringa SQL: SOSTITUIRE

REPLACE(entry_char, string_searching, string_replace)

<pUn altro modo per manipolare le stringhe in SQL è REPLACE. Questa funzione consente di sostituire o rimuovere selettivamente i dati all'interno di una stringa SQL. Restituisce un oggetto ingresso_carte dove il valore di ricerca_stringhe viene sostituito con stringa_sostituzione. Se il valore stringa_sostituzione è nullo, ogni valore corrispondente a ricerca_stringhe viene eliminato dalla stringa di inserimento.

Vediamo due esempi di REPLACE al lavoro. Supponiamo di voler aggiornare parte di un record:

SELECT REPLACE ('LearnSQL is good!', 'good', 'great!') 
FROM DUAL;
---------------------

LearnSQL is great!

Come si può vedere, REPLACE ha modificato il valore good in LearnSQL is good!” to “great. Il record ora recita LearnSQL is great!

Ora proviamo una dimostrazione più pratica della manipolazione delle stringhe con questa funzione. Supponiamo di avere una tabella chiamata registry che memorizza i nomi dei dipendenti. Una dipendente di nome Jannet (l'unica Jannet presente nella tabella, ai fini di questa illustrazione) si è sposata e ha cambiato cognome. La funzione REPLACE ci permette di aggiornare il suo record in modo molto semplice:

UPDATE registry
SET name = REPLACE(name, 'Kowalski', 'Novak')
WHERE name LIKE 'Jannet%'

Jannet Kowalski è ora ufficialmente Jannet Novak, grazie alla funzione REPLACE.

Funzioni stringa SQL: SUBSTR

Esistono altre funzioni SQL utilizzate per manipolare le stringhe. SUBSTR(char, position, length)

SUBSTR prende una porzione (o una sottostringa) di una stringa SQL e la restituisce. Care definisce l'origine della sottostringa; nell'esempio seguente, è LearnSQL. Il punto di partenza della sottostringa è 6. posizione è il punto in cui inizia la sottostringa; in questo caso, a 6 caratteri dall'inizio. Infine, length definisce la lunghezza della sottostringa. Mettendo tutto insieme, si ottiene:

SELECT SUBSTR('LearnSQL',6,3) 
FROM DUAL;
-------------------

SQL

Questa funzione SQL stringa è molto utilizzata per rimuovere caratteri da una stringa di grandi dimensioni e per aggiungere caratteri a una stringa. Supponiamo di avere una tabella chiamata products che contiene un elenco di prodotti. L'ID del prodotto è composto da lettere che identificano il tipo di prodotto e da numeri che indicano la quantità disponibile.

id
----------
AA91
AA55
BG66
WP21

Supponiamo ora di voler aggiungere un trattino basso tra le lettere e i numeri dell'ID prodotto. Con CONCAT e SUBSTR è facile:

UPDATE products SET id = CONCAT(SUBSTR(id, 1, 2), '_', SUBSTR(id, 3);
id
----------
AA_91
AA_55
BG_66
WP_21

Vediamo questi comandi. UPDATE cambierà l'ID prodotto.
products CONCAT collega le porzioni di stringa create da due funzioni SUBSTR. Si noti che il secondo SUBSTR non ha un terzo parametro: includerà tutti i caratteri che si trovano dopo la posizione specificata nel secondo parametro.

Ricordate che non tutti i sistemi di database utilizzano lo stesso nome per le funzioni stringa di SQL Server. In SQL Server, la funzione SUBSTR si chiama SUBSTRING, ma la sintassi è la stessa. Fate clic qui per saperne di più su SQL Server.

Funzioni di stringa SQL: ASCII e CHR

ASCII(single_character)
CHR(character_code)

ASCII e CHR sono due funzioni SQL completamente opposte. ASCII esamina un singolo carattere e restituisce il suo codice numerico ASCII (ad esempio, "V" è 86). Se viene inserita una stringa di caratteri, questa funzione SQL stringa restituisce un valore per il primo carattere e ignora il resto. CHR, invece, prende il numero di codice ASCII e restituisce il carattere appropriato. Se gli si dà un 86, restituirà una "V".

Immaginiamo di dover trovare tutti coloro il cui cognome inizia con la A. Per farlo, abbiamo deciso di utilizzare il numero di codice ASCII. Prima di tutto, troviamo l'equivalente ASCII di "A".

SELECT ASCII('A')
FROM DUAL;
-------------------

65

Quindi 65 è il nostro numero. Ora possiamo trovare tutti i record necessari:

SELECT *
FROM workers
WHERE SUBSTR(second_name, 1, 1) = CHR(65);
first_name    second_name     age
---------    ------------     ------
Garry         Amundsen        41
Adam          Anderson        55
Elizabeth     Alanfry         33

Funzioni stringa SQL: TRIM

TRIM( [ [ LEADING | TRAILING | BOTH ] character FROM ] edit_char )

TRIMIl compito principale di SUBSTR è quello di rimuovere tutti i caratteri specificati caratteri dalla parte iniziale (iniziale), dalla parte finale (trailing) o da entrambe le parti (entrambi) di una stringa specifica (edit_char).

Questa istruzione ha molti parametri. Innanzitutto, è necessario scegliere la parte della stringa in cui si desidera tagliare i caratteri. In caso contrario, TRIM rimuoverà i caratteri definiti sia dall'inizio che dalla fine della stringa. modifica_carte. Successivamente, è necessario indicare cosa caratteri da rimuovere. Se questo parametro viene omesso, la funzione rimuoverà solo i caratteri di spazio. Infine, si definisce la stringa.

Vediamo come si presenta nella pratica:

Rimuovere gli spazi iniziali e finali:

SELECT TRIM('    SQL2017    ')
FROM DUAL;
------------------

“SQL2017”
SELECT TRIM ('' FROM  '   SQL2017   ')
FROM DUAL;
------------------

"SQL2017"

Rimuovere il carattere "2017" dalla stringa:

SELECT TRIM (TRAILING '2017' FROM 'SQL2017')
FROM DUAL;
------------------

"SQL"

Rimuovere gli spazi iniziali e finali "20" dalla stringa:

SELECT TRIM (BOTH '20' FROM '2017LearnSQL20')
FROM DUAL;
------------------

"17LearnSQL"

Purtroppo, TRIM non ha la stessa sintassi in tutti i database. In SQL Server, TRIM accetta solo il parametro edit_char ed elimina tutti gli spazi da entrambe le estremità della stringa. LTRIM elimina gli spazi iniziali e RTRIM elimina gli spazi finali.

Conclusione

Esistono molte funzioni SQL che ci permettono di manipolare le stringhe. Ciò che abbiamo discusso in questo post è solo una piccola parte di ciò che le funzioni SQL possono fare. Per imparare in dettaglio le funzioni SQL per le stringhe, consultate il nostro corso online LearnSQL.it's Standard SQL Functions.