Rediger din WHERE
tilstand som denne:
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
Dette er en af måderne, hvorpå Oracle understøtter escape-karakterer. Her definerer du escape-tegnet med escape
søgeord. For detaljer se dette link på Oracle Docs.
'_'
og '%'
er jokertegn i en LIKE
betjent sætning i SQL.
_
karakter leder efter en tilstedeværelse af (en hvilken som helst) et enkelt tegn. Hvis du søger efter columnName LIKE '_abc'
, vil det give dig et resultat med rækker med 'aabc'
, 'xabc'
, '1abc'
, '#abc'
men IKKE 'abc'
, 'abcc'
, 'xabcd'
og så videre.
'%'
tegn bruges til at matche 0 eller flere antal tegn. Det betyder, at hvis du søger efter columnName LIKE '%abc'
, vil det give dig resultat med 'abc'
, 'aabc'
, 'xyzabc'
og så videre, men ingen 'xyzabcd'
, 'xabcdd'
og enhver anden streng, der ikke ender med 'abc'
.
I dit tilfælde har du søgt med '%_%'
. Dette vil give alle rækker med den kolonne, der har et eller flere tegn, det vil sige alle tegn, som værdi. Det er derfor, du får alle rækkerne, selvom der ikke er nogen _
i dine kolonneværdier.