Upravte WHERE tento stav:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Toto je jeden ze způsobů, jak Oracle podporuje escape znaky. Zde definujete znak escape pomocí escape klíčové slovo. Podrobnosti naleznete na tomto odkazu na Oracle Docs.
'_' a '%' jsou zástupné znaky v LIKE operovaný příkaz v SQL.
_ postava hledá přítomnost (jakéhokoli) jediného znaku. Pokud hledáte podle columnName LIKE '_abc' , poskytne vám výsledek s řádky obsahujícími 'aabc' , 'xabc' , '1abc' , '#abc' ale NE 'abc' , 'abcc' , 'xabcd' a tak dále.
'%' znak se používá pro shodu 0 nebo více znaků. To znamená, že pokud hledáte podle columnName LIKE '%abc' , poskytne vám výsledek s 'abc' , 'aabc' , 'xyzabc' a tak dále, ale žádný 'xyzabcd' , 'xabcdd' a jakýkoli jiný řetězec, který nekončí 'abc' .
Ve vašem případě jste hledali podle '%_%' . Tím získá všechny řádky s tímto sloupcem jeden nebo více znaků, tedy libovolné znaky, jako svou hodnotu. To je důvod, proč získáváte všechny řádky, i když neexistuje žádný _ v hodnotách sloupců.