SQL Server Escape un carattere di sottolineatura
-
08-06-2019 - |
Domanda
Come posso evitare il carattere di sottolineatura?
Sto scrivendo qualcosa di simile alla seguente clausola where e voglio essere in grado di trovare le voci effettive con _d alla fine.
Where Username Like '%_d'
Soluzione
Riferimento T-SQL per LIKE per SQL Server 2000:
È possibile utilizzare i caratteri di corrispondenza del modello jolly come caratteri letterali.Per utilizzare un carattere jolly come carattere letterale, racchiuderlo tra parentesi.La tabella mostra diversi esempi di utilizzo della parola chiave LIKE e dei caratteri jolly [ ].
Per il tuo caso:
... LIKE '%[_]d'
Altri suggerimenti
Ovviamente la soluzione @Lasse è giusta, ma c'è un altro modo per risolvere il tuo problema:Operatore TSQL LIKE
definisce l'opzionale FUGA clausola, che ti consente di dichiarare un carattere che sfuggirà al carattere successivo nel modello.
Nel tuo caso, le seguenti clausole WHERE sono equivalenti:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
Queste soluzioni hanno assolutamente senso.Sfortunatamente, nessuno dei due ha funzionato per me come previsto.Invece di cercare di complicarlo, ho optato per una soluzione:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Questo ha funzionato per me, basta usare la fuga'%\_%'