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ů.