Cerca le righe con caratteri speciali in SQL Server
Durante la risoluzione di un problema di programmazione oggi ho notato che non è possibile utilizzare una ricerca LIKE per colonne di stringhe contenenti caratteri speciali come% o _ senza utilizzare una sintassi speciale. Calcolare il problema richiede solo pochi minuti, ma ricordare la sintassi è sempre più facile se si scrive su di esso.
Quindi sì, questo post è esclusivamente a mio vantaggio. Spero che aiuterà anche qualcun altro.
Diciamo che vuoi trovare tutti i campi che contengono il testo "100%", quindi metti insieme questa domanda:
SELECT * FROM tablename WHERE fieldname LIKE '% 100 %%'
Invece di ciò che volevi, otterrai tutte le righe che contengono "100" e le righe che contengono "100%".
Il problema qui è che SQL Server utilizza il segno di percentuale, il carattere di sottolineatura e le parentesi quadre come caratteri speciali. Semplicemente non puoi usarli come un carattere normale in una query LIKE senza sfuggirli.
Fuga Square Bracket
È possibile circondare% o _ con parentesi quadre per indicare a SQL Server che il carattere all'interno è un carattere normale.
SELECT * FROM tablename WHERE fieldname LIKE '% 100 [%]%'
T-SQL ESCAPE Sintassi
In alternativa, è possibile aggiungere l'operatore ESCAPE alla query e aggiungere un carattere \ prima del valore che si desidera scappare.
SELECT * FROM tablename WHERE fieldname LIKE '% 100 \ %%' ESCAPE '\'
La parte ESCAPE '\' della query indica al motore SQL di interpretare il carattere dopo \ come carattere letterale invece che come carattere jolly.
Personalmente trovo il secondo metodo più facile da gestire, e puoi usarlo anche per sfuggire a una parentesi quadra.