【发布时间】:2015-05-28 13:46:55
【问题描述】:
我正在尝试使用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从字符串的 left 开始计数,但right从字符串的 right 开始计数。 .. -
所有答案都正确,选择@PhilipKelley 指出额外的注意事项。