(Using SQL Server 2019 CU 31)
Why does only the CASE expression against @nvarchar_dash_after_ranges return 'LIKE' in this query? Note that the same comparison against a VARCHAR expression returns 'NOT LIKE'.
USE master;
DECLARE @varchar_dash_at_beginning VARCHAR(100) = '%[^-A-Za-z0-9/]%';
DECLARE @varchar_dash_after_ranges VARCHAR(100) = '%[^A-Za-z0-9-/]%';
DECLARE @nvarchar_dash_at_beginning NVARCHAR(100) = N'%[^-A-Za-z0-9/]%';
DECLARE @nvarchar_dash_after_ranges NVARCHAR(100) = N'%[^A-Za-z0-9-/]%';
DECLARE @str VARCHAR(50) = '-';
SELECT '@varchar_dash_at_beginning' AS expression_name,
(SELECT CASE
WHEN @str LIKE @varchar_dash_at_beginning
THEN 'LIKE'
ELSE 'NOT LIKE'
END AS like_eval) AS result
UNION ALL
SELECT '@varchar_dash_after_ranges' AS expression_name,
(SELECT CASE
WHEN @str LIKE @varchar_dash_after_ranges
THEN 'LIKE'
ELSE 'NOT LIKE'
END AS like_eval) AS result
UNION ALL
SELECT '@nvarchar_dash_at_beginning' AS expression_name,
(SELECT CASE
WHEN @str LIKE @nvarchar_dash_at_beginning
THEN 'LIKE'
ELSE 'NOT LIKE'
END AS like_eval) AS result
UNION ALL
SELECT '@nvarchar_dash_after_ranges' AS expression_name,
(SELECT CASE
WHEN @str LIKE @nvarchar_dash_after_ranges
THEN 'LIKE'
ELSE 'NOT LIKE'
END AS like_eval) AS result;