Просто строю из ответов Тима (все три ответа выглядят отлично) ...
Да - вы получите ошибку, если передадите ей пробел или пробел (только один или несколько пробелов), потому что LEN(' ') = 0
. 0-1 = -1. LEFT(<something>,-1)
недействительно. Чтобы исправить это, вы должны изменить логику Тима на new_sup
, чтобы она выглядела так:
ISNULL(LOWER(LEFT(Supervisor, NULLIF(LEN(Supervisor),0) - 1)),'') AS new_sup
Полное обновленное решение будет выглядеть так:
DECLARE @yourtable TABLE (Supervisor VARCHAR(100));
INSERT @yourtable(Supervisor)
VALUES ('SPARKSL'),('ADITYAG'),('KENTONS'),('DRISCOLLJ'),(' '),('');
WITH cte AS (
SELECT *,
LOWER(RIGHT(Supervisor, 1)) +
ISNULL(LOWER(LEFT(Supervisor, NULLIF(LEN(Supervisor),0) - 1)),'') AS new_sup
FROM @yourTable
)
SELECT *
FROM cte;