Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Caratteri speciali di escape in un'istruzione SQL LIKE utilizzando parametri sql

Hai due opzioni:

  • racchiudili in [ e ] . Quindi:

    where pattern like '[%]'
    

    Cerca il carattere percentuale.Elenco completo di caratteri da cui eseguire l'escape:'_', '%', '[', ']' con sostituzioni corrispondenti '[_]', '[%]', '[[]', '[]]' . Il codice di esempio può essere trovato in L'escape del carattere di escape non funziona:operatore SQL LIKE

  • usa un carattere di escape che è improbabile che si trovi nella stringa, ad esempio un backtick:

    where pattern like '`%' escape '`'
    

    (Vedi la sintassi su MSDN - LIKE (Transact-SQL) .)

In entrambi i casi, ti suggerirei di effettuare la sostituzione nel livello dell'applicazione, ma puoi anche farlo in SQL se lo desideri:

where pattern like replace(@pattern, '%', '[%]')

Inoltre, fornire all'utente finale l'accesso ai caratteri jolly può essere una buona cosa in termini di interfaccia utente.

Nota:ci sono un paio di caratteri speciali in più '-' e '^' nella query LIKE, ma non è necessario eseguirne l'escape se stai già eseguendo l'escape di '[' e ']' .