Я пытаюсь использовать функцию RIGHT
, чтобы получить подстроку значения, если она состоит из '/', но она не работает, когда Я добавляю номер к значению CHARINDEX
; только без.SQL Server 2005 - RIGHT() не работает при добавлении в CHARINDEX()
Вот пример кода:
SELECT CASE
WHEN
CHARINDEX('/',REPLACE(ISNULL(d.target_grade,'NA'), 'N/A', 'NA')) = 0
THEN
REPLACE(ISNULL(d.target_grade,'NA'),'N/A','NA')
ELSE
RIGHT(d.target_grade, CHARINDEX('/',REPLACE(ISNULL(d.target_grade,'NA'), 'N/A', 'NA'))+1)
END as target_grade
FROM tbl --etc.
Это возвращает к примеру
target_grade
-------------
C/D
Он должен вернуть хотя это
target_grade
-------------
D
Если удалить +1
, однако, функция RIGHT
работает точно так, как должна
target_grade
-------------
/D
Что я здесь делаю неправильно? Неужели моя логика испорчена?
Ваша логика не так - 'charindex' отсчеты от ** осталось ** строки, но' right' отсчеты от ** ** справа от строки ... –
Все ответы правильные, выбрал @PhilipKelley для указания дополнительных соображений. – RoyalSwish