2008-08-08 9 views
225

Come posso sfuggire il carattere di sottolineatura?SQL Server fuga una sottolineatura

sto scrivendo qualcosa di simile al seguente clausola dove e voglio essere in grado di trovare le voci effettive con _d alla fine.

Where Username Like '%_d' 

risposta

338

T-SQL Reference for LIKE for SQL Server 2000:

È possibile utilizzare il modello jolly corrispondenti caratteri come caratteri letterali. Per utilizzare un carattere jolly come carattere letterale, racchiudere il carattere jolly tra parentesi. La tabella mostra alcuni esempi di utilizzando la parola chiave LIKE e le [] caratteri jolly.

Per il vostro caso:

... LIKE '%[_]d' 
138

Ovviamente soluzione @Lasse è giusto, ma c'è un altro modo per risolvere il problema: T-SQL operatore LIKE definisce il ESCAPE clausola facoltativa, che permette di dichiarare un personaggio che sfuggire il carattere successivo nello schema.

Per il vostro caso, le seguenti clausole WHERE sono equivalenti:

WHERE username LIKE '%[_]d';   -- @Lasse solution 
WHERE username LIKE '%$_d' ESCAPE '$'; 
WHERE username LIKE '%^_d' ESCAPE '^'; 
+20

Per completare il quadro: la clausola 'ESCAPE' è parte dello standard SQL e funziona su qualsiasi DBMS, non solo di SQL Server. –