A. This only happens with Unicode columns because Unicode sorts/compares are based on the Windows standard which effectively ignores the hyphen character.

as an example

create table t (cocode nvarchar(6))
go

insert into t values ('AXB')
insert into t values ('AXC')
insert into t values ('A-Y')
go

select * from t where
(cocode > 'A-X') AND (cocode < 'A-Z')

produces:

cocode
------
AXB
AXC
A-Y

(3 row(s) affected)

If the nvarchar(6) is changed to varchar(6) then the expected result set is produced (only row A-Y appears).