Can anyone explain the rules for how a wildcard character range, eg [A-D], works with a case-sensitive collation?
I would have thought the following
Using a case-sensitive collation works for search strings that are not in a range e.g. this would work:
SELECT *
FROM #TEST_LIKE_Patterns
WHERE (
CharColumn LIKE 'A%' COLLATE Latin1_General_CS_AS
OR CharColumn LIKE 'B%' COLLATE Latin1_General_CS_AS
OR CharColumn LIKE 'C%' COLLATE Latin1_General_CS_AS
OR CharColumn LIKE 'D%' COLLATE Latin1_General_CS_AS
);
...but clearly that's not an acceptable approach!
As others have suggested, use Latin1_General_BIN
for ranges.