Променете вашия WHERE
състояние като това:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Това е един от начините, по които Oracle поддържа escape символи. Тук дефинирате escape символа с escape
ключова дума. За подробности вижте тази връзка в Oracle Docs.
'_'
и '%'
са заместващи знаци в LIKE
опериран оператор в SQL.
_
символ търси присъствие на (който и да е) един единствен знак. Ако търсите по columnName LIKE '_abc'
, ще ви даде резултат с редове с 'aabc'
, 'xabc'
, '1abc'
, '#abc'
но НЕ 'abc'
, 'abcc'
, 'xabcd'
и така нататък.
'%'
символът се използва за съвпадение на 0 или повече броя знаци. Това означава, че ако търсите по columnName LIKE '%abc'
, ще ви даде резултат с 'abc'
, 'aabc'
, 'xyzabc'
и така нататък, но без 'xyzabcd'
, 'xabcdd'
и всеки друг низ, който не завършва с 'abc'
.
Във вашия случай сте търсили по '%_%'
. Това ще даде на всички редове с тази колона един или повече знака, което означава всякакви знаци, като стойност. Ето защо получавате всички редове, въпреки че няма _
в стойностите на колоната си.