Capire SQL CONTAINS
SQL CONTAINS viene utilizzato per le ricerche full-text, consentendoti di interrogare i database per parole, frasi o pattern specifici all'interno di dati testuali. È particolarmente utile per trovare informazioni in campi di testo estesi in cui la posizione esatta dei dati non è nota in anticipo.
Sintassi e parametri
La sintassi di base di SQL CONTAINS è la seguente:
CONTAINS (column_name, 'search_pattern')
Gli elementi chiave includono:
- Nome della colonna: il campo in cui verrà eseguita la ricerca. Deve essere una colonna indicizzata per la ricerca full-text.
- Pattern di ricerca: il testo che desideri trovare all'interno della colonna, racchiuso tra apici singoli.
Operatori e wildcard
Per affinare la ricerca, SQL CONTAINS supporta vari operatori:
AND&OR: usali per combinare più termini di ricerca.NEAR: trova parole che si trovano entro una certa prossimità tra loro.- ASTERISCO (
*): funge da wildcard per eseguire ricerche in cui la parola esatta può essere parte di una stringa più lunga.
Implementare SQL CONTAINS
Esploriamo come applicare SQL CONTAINS con esempi pratici:
Uso di base
Per cercare i termini "apple" e "orange" all'interno di una colonna chiamata "fruit", puoi usare:
CONTAINS (fruit, '"apple" AND "orange"')
Questa query restituisce le righe in cui entrambi i termini sono presenti nella colonna "fruit".
Ricerche avanzate
Per ricerche più complesse, combinare CONTAINS con altre funzioni SQL consente query articolate, come cercare frasi vicine tra loro o usare wildcard per trovare variazioni di una parola.
Le ricerche avanzate possono includere la combinazione di CONTAINS con operatori logici, l'uso di ricerche per prossimità e l'impiego di caratteri jolly per scoprire pattern o punti dati specifici all'interno di campi di testo.
Combinare CONTAINS con operatori logici
SQL CONTAINS supporta l'uso di operatori logici come AND, OR e NOT per affinare le ricerche in base a più criteri. Ad esempio, per trovare le voci che contengono sia "technology" sia "innovation" all'interno di una colonna di testo, potresti strutturare la query come segue:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, '"technology" AND "innovation"'
);
Al contrario, per trovare le voci che contengono uno dei due termini, useresti OR:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, '"technology" OR "innovation"'
);
Ricerche per prossimità
L'operatore NEAR è particolarmente utile per trovare parole o frasi che compaiono vicine tra loro nel testo. Questa capacità è preziosa quando la relazione tra i termini influisce sul loro significato. Ad esempio, per cercare "climate" vicino a "change" entro 10 parole l'una dall'altra:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, 'NEAR((climate, change), 10)'
);
Questa query dà priorità ai record in cui "climate" e "change" sono strettamente correlati, offrendo risultati più pertinenti per domande di ricerca specifiche.
Ricerche con wildcard
Le wildcard ampliano l'ambito delle ricerche consentendo l'inclusione di caratteri variabili. L'asterisco (*) funge da wildcard nelle query CONTAINS, abilitando ricerche per corrispondenze parziali. Ad esempio, per trovare variazioni di "compute" come "computer", "computing" o "computation", potresti usare:
SELECT
*
FROM
your_table
WHERE
CONTAINS(your_column, '"compute*"');
Questo approccio è particolarmente utile quando vuoi catturare un ampio insieme di dati legati a una radice lessicale o quando non conosci i termini esatti usati nel database.
Corrispondenza avanzata di pattern
Per scenari che richiedono una corrispondenza di pattern ancora più sofisticata, valuta di combinare SQL CONTAINS con l'operatore LIKE o con le espressioni regolari. Sebbene CONTAINS eccella nella ricerca full-text, LIKE e le regex possono offrire flessibilità sui pattern, ad esempio per abbinare specifiche sequenze di caratteri o formati (ad es. indirizzi email o numeri di telefono).
Esempio pratico: combinare tecniche per ricerche complete
Immagina di dover trovare voci di database relative alla tecnologia ambientale, senza essere sicuro delle frasi esatte usate nel testo. Potresti combinare varie tecniche come segue:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, '("environment*" NEAR "technology*", 10) OR "climate change" OR "renewable energy"'
)
AND your_column LIKE '%sustainability%';
Questa query mostra come usare CONTAINS per ricerche per prossimità e con wildcard, incorporando al contempo l'operatore LIKE per un'ulteriore corrispondenza di pattern, offrendo una strategia solida per ricerche testuali complesse.
Esempio pratico di SQL CONTAINS nella data science
Come data scientist, lavoro con diversi tipi di dataset, principalmente testuali per la soddisfazione e il feedback dei clienti. In questo esempio cercheremo parole chiave specifiche che possano indicare soddisfazione o insoddisfazione nei feedback dei clienti.
|
ID |
FeedbackText |
SatisfactionScore |
|
1 |
I am very happy with the service. |
5 |
|
2 |
Not satisfied with the product quality. |
2 |
|
3 |
The delivery was quick, and the product works great... |
5 |
|
4 |
Customer service was unhelpful and rude. |
1 |
|
5 |
Happy with my purchase. Will recommend! |
4 |
Tabella CustomerFeedback
Per usare CONTAINS, il tuo database potrebbe dover avere la ricerca full-text abilitata.
La parola chiave CONTAINS viene usata per trovare i record in cui la colonna “FeedbackText” contiene la parola “happy”.
SELECT
*
FROM
CustomerFeedback
WHERE
CONTAINS(FeedbackText, 'happy');
La query sopra restituirà le righe di CustomerFeedback in cui la colonna FeedbackText contiene la parola “happy”.
|
ID |
FeedbackText |
SatisfactionScore |
|
1 |
I am very happy with the service. |
5 |
|
3 |
The delivery was quick, and the product works great... |
5 |
|
5 |
Happy with my purchase. Will recommend! |
4 |
Non puoi usare il comando CONTAINS nel database SQLite. In alternativa, prova a usare:
SELECT
*
FROM
CustomerFeedback
WHERE
FeedbackText LIKE '%happy%';
Oltre CONTAINS: pattern matching e manipolazione di stringhe
Sebbene CONTAINS sia potente per le ricerche testuali, SQL offre anche altre tecniche per lavorare con i dati testuali:
Operatore LIKE
Simile a CONTAINS, l'operatore LIKE consente il pattern matching ma con una sintassi più semplice, usando % come wildcard. Ad esempio, per trovare qualsiasi nome prodotto contenente "apple":
SELECT
*
FROM
Products
WHERE
productName LIKE '%apple%'
Funzioni avanzate per le stringhe
SQL fornisce funzioni come LEFT e REVERSE per estrarre o manipolare parti di stringhe di testo, offrendo ampie possibilità per l'analisi e la manipolazione del testo. Puoi approfondire nel nostro corso Cleaning Data in SQL Server Databases.
Conclusione
La funzione SQL CONTAINS e le relative capacità di manipolazione del testo sono strumenti essenziali per chi lavora con i dati. Comprendendo e applicando queste tecniche, puoi cercare e analizzare efficacemente i dati testuali nei tuoi database, sbloccando insight e potenziando i tuoi progetti di analisi.
Ricorda: l'efficacia delle tue query dipende non solo dalla padronanza della sintassi, ma anche dalla comprensione del contesto e della struttura dei tuoi dati. Esercitati con dataset reali e progetti SQL ed esplora varie funzioni per sfruttare appieno la potenza di SQL nell'analisi dei dati testuali.
Per saperne di più sugli operatori SQL ed esplorare le basi di SQL, dai un'occhiata alla nostra SQL Basics Cheat Sheet e allo skill track SQL Fundamentals.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.



La capacità di cercare e manipolare dati testuali è indispensabile per data scientist o data engineer. La funzione CONTAINS di SQL è uno strumento potente per eseguire ricerche testuali sofisticate all'interno dei tuoi database, permettendoti di recuperare dati in base a pattern o parole chiave specifiche.
Questo tutorial ti guiderà nell'uso efficace di SQL
CONTAINS, così da poter sfruttare tutto il suo potenziale per le tue esigenze di analisi dei dati.