Ändra din WHERE
skick så här:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Detta är ett av sätten som Oracle stöder flyktkaraktärer på. Här definierar du escape-tecknet med escape
nyckelord. För mer information se den här länken på Oracle Docs.
'_'
och '%'
är jokertecken i en LIKE
opererad sats i SQL.
_
tecken letar efter en närvaro av (vilket som helst) ett enda tecken. Om du söker med columnName LIKE '_abc'
, kommer det att ge dig resultat med rader som har 'aabc'
, 'xabc'
, '1abc'
, '#abc'
men INTE 'abc'
, 'abcc'
, 'xabcd'
och så vidare.
'%'
tecken används för att matcha 0 eller fler antal tecken. Det betyder att om du söker med columnName LIKE '%abc'
, kommer det att ge dig resultat med att ha 'abc'
, 'aabc'
, 'xyzabc'
och så vidare, men ingen 'xyzabcd'
, 'xabcdd'
och alla andra strängar som inte slutar med 'abc'
.
I ditt fall har du sökt med '%_%'
. Detta kommer att ge alla rader med den kolumnen som har ett eller flera tecken, det vill säga alla tecken, som dess värde. Det är därför du får alla rader även om det inte finns någon _
i dina kolumnvärden.