当值为null时,使用Charindex和right函数

时间:2013-06-27 22:28:04

标签: sql sql-server string

基本上我试图从捕获整个路径的列中获取文件名。在刷新数据库之前,select语句实际上已经工作了。现在它失败了,因为最近没有上传文件。

这是我得到的错误: 错误:传递给RIGHT函数的长度参数无效。

SELECT right(batch_ID, CHARINDEX('\', REVERSE(batch_ID)) - 1) AS [File Name]
from
table1

请帮我弄清楚如何更改语句,如果有空值或者如果charindex找不到'\',它仍然有效。

谢谢!

1 个答案:

答案 0 :(得分:0)

一种选择是使用案例陈述,例如:

declare @path as varchar(100);
set @path = '';

select case when CHARINDEX('\', coalesce(@path, ''),1) > 0 
            then right(@path, CHARINDEX('\', REVERSE(@path)) - 1) 
            else null end