PostgreSQL vil gøre dette, hvis du bygger indekset med text_pattern_ops operatør, eller hvis du bruger C-sorteringen.
Hvis du bruger en tilfældig anden sammenstilling, kan PostgreSQL ikke udlede meget af noget om det. Bemærk dette i den meget almindelige "en_US.utf8"-sortering.
select * from (values ('03.000221.1'), ('03.0002212'), ('03.000221.3')) f(x) order by x;
x
-------------
03.000221.1
03.0002212
03.000221.3
Hvilket så naturligvis fører til dette forkerte svar med din forespørgsel:
select * from (values ('03.000221.1'), ('03.0002212'), ('03.000221.3')) f(id)
where ((id >= '03.000221.'::text) AND (id < '03.000221.Z'::text))
id
-------------
03.000221.1
03.0002212
03.000221.3