CosmosDB: substring

Questa settimana ho deciso di aprire gli articoli sul blog con un piccolo tips sempre a tema CosmosDB visto che dal precedente post in argomento è passato davvero parecchio tempo. Di cosa si tratta? Andremo a vedere come ottenere una parte di una stringa. Pronto?

SUBSTRING

Come funziona il SUBSTRING? Prima di cominciare la parte pratica, vediamo la definizione presente nella documentazione Microsoft.

Restituisce parte di un’espressione stringa a partire dalla posizione in base zero del carattere specificato e continua fino alla lunghezza specificata o alla fine della stringa.

La premessa teorica -specialmente per chi è alle prime armi- significa che in una stringa di N caratteri bisogna contarli da 0 a N-1.

Ora supponiamo di volere prendere tutti i documenti presenti dove la proprietà emailAddress contiene la parola test.

Come dite? Mi state chiedendo il motivo per cui non ricorro al LIKE nella WHERE? La risposta è molto semplice.

  • like: otterrei tutte le mail con al suo interno test
  • SUBSTRING: otterrei tutte le mail con al suo interno test, ma in una specifica posizione del test

Nell’esempio specifico la parola test si deve cominciare in posizione 7 (ricordiamo la base zero) e devo verificare solamente i successivi 4 caratteri. Tutto il resto della stringa di testo non mi interessa.

1
2
3
4
5
SELECT 
    c.emailAddress 
FROM c 
    WHERE 
        SUBSTRING(c.emailAddress,7,4) = 'test'

Interessante vero? Ricordatevi di utilizzare UPPER se volete evitare di “perdere” risultati per via della differenza tra lettere maiuscole e minuscole. (= vedi come esempio il post ‘CosmosDB: Query, SubQuery & JOIN')