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))
insert into t values ('AXB')
insert into t values ('AXC')
insert into t values ('A-Y')
select * from t where
(cocode > 'A-X') AND (cocode < 'A-Z')
(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).