Homepage » come » Cerca le righe con caratteri speciali in SQL Server

    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.