When looking for a range, is this according to the ascii table? For example:
where FixSubject like '%[' + Char(1) + '-' + Char(11) + ']%'
Does this find everything on the Ascii table between (start of heading) to (Vertical Tab)? or is it indeterminate what it will return?
Also, would the performance be better using individual like's or a range?
It's based on collation sorting, which is likely to be related to the ascii table, but NOT the same. Best bet is to do a simple test:
DECLARE @startchar int = 1, @endchar int = 11;
TALLY10(N) AS (
SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL
SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL
SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 0
TALLY100(N) AS (SELECT 1 FROM TALLY10 a, TALLY10 b),
TALLY10K(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM TALLY100 a, TALLY100 b)
SELECT N ASCIICODE, CHAR(N) CHARVALUE
WHERE CHAR(N) LIKE '[' + CHAR(@startchar) + '-' + CHAR(@endchar) + ']'
ORDER BY N
This just uses an inline tally table to return a list of all ascii code's and char values that match the range between @startchar and @endchar. On my system, it does appear to work as you expect for char(1)-char(11), but I don't know if this is true for all collations.
Note that 1-47 seems like it might be a 1-1 match, but 1-48 will suddenly return 132 "matching" rows as many punctuation marks with higher ascii values are sorted prior to zero (char(48)) in my collation.