Zmodyfikuj swój WHERE warunek taki:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Jest to jeden ze sposobów, w jaki Oracle obsługuje znaki ucieczki. Tutaj definiujesz znak ucieczki za pomocą escape słowo kluczowe. Aby uzyskać szczegółowe informacje, zobacz ten link w Oracle Docs.
'_' i '%' są symbolami wieloznacznymi w LIKE instrukcja obsługi w SQL.
_ znak szuka obecności (dowolnego) pojedynczego znaku. Jeśli szukasz według columnName LIKE '_abc' , da wynik z wierszami zawierającymi 'aabc' , 'xabc' , '1abc' , '#abc' ale NIE 'abc' , 'abcc' , 'xabcd' i tak dalej.
'%' znak jest używany do dopasowania 0 lub więcej znaków. Oznacza to, że jeśli wyszukujesz według columnName LIKE '%abc' , da wynik z 'abc' , 'aabc' , 'xyzabc' i tak dalej, ale bez 'xyzabcd' , 'xabcdd' i każdy inny ciąg, który nie kończy się na 'abc' .
W twoim przypadku szukałeś według '%_%' . Spowoduje to, że wszystkie wiersze z tą kolumną będą miały jeden lub więcej znaków, czyli dowolne znaki, jako swoją wartość. Dlatego otrzymujesz wszystkie wiersze, mimo że nie ma _ w wartościach kolumn.