According to the standard, the range <ch1>-<ch2> includes all the characters greater than or equal to <ch1> and smaller than or equal to <ch2>
Consequently, a descending range such as [p-k] is empty.
Firebird however matches ANY character against a descending range, i.e.
select 1 from rdb$database where 'm' similar to '[p-k]'
select 1 from rdb$database where 'z' similar to '[p-k]'
both return 1 whilst they should return an empty set.