Это вопрос, основанный на производительности, а не "Я не понимаю" или "лучший способ".
У меня есть поле varchar в базе данных SQLServer, которая гарантированно длиннее 7 символов. Мне нужно извлечь поле char (4), состоящее из 2, 3, 4 и 5 символов в varchar.
Например, если varchar имел значение 1234567890, я бы искал часть 2345.
Есть ли преимущество в производительности для использования подстроки над списком справа налево?
SELECT SUBSTRING(account,2,4) FROM payment
или
SELECT RIGHT(LEFT(account,5),4) FROM payment
Я заметил небольшое преимущество, используя правую левую сторону таблицы с 1,760,335 записями, но я не уверен, связано ли это с кешированием запросов и т.п.
UPDATE Я сделал немного больше домашней работы. Кажется, что в этом случае правые-левые в конечном счете выполняются как правая подстрока. Это правило? или это просто способ, которым SQLServer решил скинуть этот конкретный кот?