Modifica il tuo WHERE
condizione come questa:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Questo è uno dei modi in cui Oracle supporta i caratteri di escape. Qui definisci il carattere di escape con escape
parola chiave. Per i dettagli, vedere questo collegamento su Oracle Docs.
Il '_'
e '%'
sono caratteri jolly in un LIKE
istruzione operata in SQL.
Il _
il personaggio cerca la presenza di (qualsiasi) un singolo personaggio. Se cerchi per columnName LIKE '_abc'
, ti darà il risultato con righe con 'aabc'
, 'xabc'
, '1abc'
, '#abc'
ma NON 'abc'
, 'abcc'
, 'xabcd'
e così via.
Il '%'
il carattere viene utilizzato per la corrispondenza di 0 o più numeri di caratteri. Ciò significa che se esegui una ricerca per columnName LIKE '%abc'
, ti darà il risultato con 'abc'
, 'aabc'
, 'xyzabc'
e così via, ma non 'xyzabcd'
, 'xabcdd'
e qualsiasi altra stringa che non termina con 'abc'
.
Nel tuo caso hai cercato per '%_%'
. Questo darà tutte le righe con quella colonna che hanno uno o più caratteri, ovvero qualsiasi carattere, come valore. Questo è il motivo per cui ottieni tutte le righe anche se non c'è _
nei valori delle colonne.