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.