【问题标题】:Working with Charindex and right function when the value is null当值为 null 时使用 Charindex 和 right 函数
【发布时间】:2013-06-27 22:28:04
【问题描述】:

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

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

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

请帮我弄清楚如何更改语句,以便如果存在空值或 charindex 找不到 '\',它仍然可以工作。

谢谢!

【问题讨论】:

  • 在你反转它之前将反斜杠添加到batch_id:SELECT right(batch_ID, CHARINDEX('\', REVERSE('\' + batch_ID)) - 1)

标签: sql sql-server string


【解决方案1】:

一种选择是使用 case 语句,例如:

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

【讨论】:

  • 谢谢!这正是我想要的!
猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
相关资源
最近更新 更多