Modifica tu WHERE
condición como esta:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Esta es una de las formas en que Oracle admite caracteres de escape. Aquí se define el carácter de escape con escape
palabra clave. Para obtener más información, consulte este enlace en Oracle Docs.
El '_'
y '%'
son comodines en un LIKE
instrucción operada en SQL.
El _
El personaje busca la presencia de (cualquiera) un solo personaje. Si busca por columnName LIKE '_abc'
, le dará resultados con filas que tienen 'aabc'
, 'xabc'
, '1abc'
, '#abc'
pero NO 'abc'
, 'abcc'
, 'xabcd'
y así sucesivamente.
El '%'
El carácter se utiliza para hacer coincidir 0 o más caracteres. Eso significa que si busca por columnName LIKE '%abc'
, le dará el resultado de tener 'abc'
, 'aabc'
, 'xyzabc'
y así sucesivamente, pero no 'xyzabcd'
, 'xabcdd'
y cualquier otra cadena que no termine con 'abc'
.
En tu caso has buscado por '%_%'
. Esto dará todas las filas con esa columna que tiene uno o más caracteres, es decir, cualquier carácter, como su valor. Es por eso que está obteniendo todas las filas aunque no hay _
en los valores de su columna.