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.