无法使用 RIGHT 函数创建计算列,因为 CHARINDEX returns null

Cannot create a Computed column using RIGHT function because CHARINDEX returns null

所以我有一个文档 table,我想在其中使用列 FileName 添加一个名为 FileType 的计算列。下面是我用来添加计算列的代码:

ALTER TABLE dbo.Document
Add FileType AS UPPER(RIGHT(FileName,CHARINDEX('.',REVERSE(FileName))-1))

事实证明,FileName 列中的某些数据的名称中没有 '.',这是导致问题的原因。我想以某种方式实现对 return CharIndex 的检查,只检查那些在 FileName 中包含 '.' 的数据。但是我不能在Alter语句中写Select语句。

注意:我试图从以下链接中找到解决方案,这些链接帮助我找到了问题,但我无法从中获得任何解决方案。

使用 case 表达式使其成为条件表达式,例如

UPPER(RIGHT(FileName, case when CHARINDEX('.',REVERSE(FileName)) > 0 then CHARINDEX('.',REVERSE(FileName))-1 else len(Filename) end))

最简单的方法是添加分隔符:

UPPER(RIGHT(FileName, CHARINDEX('.', REVERSE(FileName) + '.') - 1))

不需要条件逻辑。