Я встречал какой-то старый код, что-то вроде этого примера:
DECLARE @tmpVal INT = 999
DECLARE @tmpTable TABLE (col1 INT, col2 VARCHAR(20))
INSERT INTO @tmpTable (col1, col2)
VALUES
(1, 'Do not want this'),
(2, 'Happy with this'),
(3, NULL)
SELECT
col1,
col2,
-- I see code like this
CASE
WHEN ISNULL(col2, 'Do not want this') NOT LIKE 'Do not want this'
THEN @tmpVal
END AS CurrentCol,
-- can I replace it with code like this because there is no else?
CASE
WHEN col2 <> 'Do not want this'
THEN @tmpVal
END AS BetterCol
FROM
@tmpTable
Я думаю, что ISNULL(col2, 'Do not want this') NOT LIKE 'Do not want this'
следует заменить на col2 <> 'Do not want this'
, поскольку он отлично справляется с нулевым регистром.
Могу ли я использовать форму в BetterCol вместо CurrentCol в качестве выражения WHEN, и если нет, то почему? Есть ли какие-нибудь крайние случаи, которых я не вижу?