E' giusto che i risultati siano quelli. Stai confrontando delle stringhe.

Prova banalmente questo esempio

select 'bianca' < 'b'

che ti restituirà 0, quindi è ovvio che tutti i nomi che iniziano con la lettera b non vengano inclusi.

Una delle tante alternative è questa

select * from tab1 where nome regexp '^[a-b]'