Modifiez votre WHERE
condition comme celle-ci :
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
C'est l'une des façons dont Oracle prend en charge les caractères d'échappement. Ici vous définissez le caractère d'échappement avec le escape
mot-clé. Pour plus de détails, consultez ce lien sur Oracle Docs.
Le '_'
et '%'
sont des jokers dans un LIKE
instruction opérée en SQL.
Le _
Le caractère recherche la présence d'un (n'importe quel) caractère unique. Si vous recherchez par columnName LIKE '_abc'
, il vous donnera un résultat avec des lignes ayant 'aabc'
, 'xabc'
, '1abc'
, '#abc'
mais PAS 'abc'
, 'abcc'
, 'xabcd'
et ainsi de suite.
Le '%'
Le caractère est utilisé pour faire correspondre 0 ou plusieurs caractères. Cela signifie que si vous recherchez par columnName LIKE '%abc'
, cela vous donnera un résultat avec 'abc'
, 'aabc'
, 'xyzabc'
et ainsi de suite, mais pas de 'xyzabcd'
, 'xabcdd'
et toute autre chaîne qui ne se termine pas par 'abc'
.
Dans votre cas, vous avez recherché par '%_%'
. Cela donnera toutes les lignes avec cette colonne ayant un ou plusieurs caractères, c'est-à-dire tous les caractères, comme valeur. C'est pourquoi vous obtenez toutes les lignes même s'il n'y a pas de _
dans vos valeurs de colonne.