L’istruzione LIKE è estremamente usata in T-SQL, spesso però viene limitata all’uso del carattere % per indicare una qualsiasi stringa composta da 0 o più caratteri, ignorando che ha alcune potenzialità in più (anche se non raggiunge minimamente la profondità delle espressioni regolari. Per aggiungere le regex ad un SQL Server è necessario usare funzioni CLR come spiegato qui).
I caratteri jolly presenti in T-SQL sono i seguenti
Carattere | Descrizione |
---|---|
% | Stringa composta da zero o più caratteri |
_ | Carattere singolo |
[a-f] | Carattere singolo compreso nell’intervallo ([a-f]) o nel set ([abcdef]) specificato |
[^a-f] | Carattere singolo non compreso nell’intervallo ([^a-f]) o nel set ([^abcdef]) specificato |
Di seguito qualche esempio preso dalla documentazione ufficiale
Simbolo | Significato |
---|---|
LIKE ’[a-cdf]’ | a, b, c, d oppure f |
LIKE ’[ [ ]’ | [ |
LIKE ‘abc[def]’ | abcd, abce e abcf |
LIKE ’M[^c]’ | Comincia con M e non è seguito da c |
Pattern in OR
Se devo controllare il match con un pattern o con un altro devo spezzare il like in più chiamate, dato che non esiste il carattere |
, che invece troviamo nelle regex, la soluzione più semplice è concatenare i filtri in OR a livello di query.
SET @filter_1 = '%test%'
SET @filter_2 = '%foo%'
SELECT *
FROM BAR
WHERE var LIKE @filter_1
OR var LIKE @filter_2