PostgreSQL akan melakukan ini jika Anda membuat indeks dengan text_pattern_ops operator, atau jika Anda menggunakan susunan C.
Jika Anda menggunakan beberapa susunan acak lainnya, PostgreSQL tidak dapat menyimpulkan banyak hal tentangnya. Perhatikan ini, dalam susunan "en_US.utf8" yang sangat umum.
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
Yang kemudian secara alami mengarah ke jawaban yang salah ini dengan pertanyaan Anda:
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