Modifique seu
WHERE
condição assim:WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Essa é uma das maneiras pelas quais o Oracle oferece suporte a caracteres de escape. Aqui você define o caractere de escape com o
escape
palavra-chave. Para obter detalhes, consulte este link no Oracle Docs. O
'_'
e '%'
são curingas em um LIKE
instrução operada em SQL. O
_
caractere procura a presença de (qualquer) um único caractere. Se você pesquisar por columnName LIKE '_abc'
, ele fornecerá um resultado com linhas com 'aabc'
, 'xabc'
, '1abc'
, '#abc'
mas NÃO 'abc'
, 'abcc'
, 'xabcd'
e assim por diante. O
'%'
caractere é usado para corresponder a 0 ou mais números de caracteres. Isso significa que, se você pesquisar por columnName LIKE '%abc'
, ele lhe dará um resultado com 'abc'
, 'aabc'
, 'xyzabc'
e assim por diante, mas não 'xyzabcd'
, 'xabcdd'
e qualquer outra string que não termine com 'abc'
. No seu caso, você pesquisou por
'%_%'
. Isso fornecerá todas as linhas com essa coluna com um ou mais caracteres, ou seja, qualquer caractere, como valor. É por isso que você está obtendo todas as linhas, mesmo que não haja _
nos valores de sua coluna.