Sql case表达式中的charindex

Sql case表达式中的charindex,sql,sql-server,case,charindex,Sql,Sql Server,Case,Charindex,我是SQL Server的新手,收到了下面的case语句,我很难理解它在做什么 我想是用835列检查索赔值是否大于1,如果大于1,则重新查看该列并输入索赔ID。这就是我的想法。能给我解释一下它在做什么吗 case when charindex(' ', ltrim(rtrim(ani.edi835claimicn))) > 1 then substring(ltrim(rtrim(ani.edi835claimicn)), 1, charindex(' ', ltr

我是SQL Server的新手,收到了下面的case语句,我很难理解它在做什么

我想是用835列检查索赔值是否大于1,如果大于1,则重新查看该列并输入索赔ID。这就是我的想法。能给我解释一下它在做什么吗

case
    when charindex(' ', ltrim(rtrim(ani.edi835claimicn))) > 1 then
        substring(ltrim(rtrim(ani.edi835claimicn)), 1, charindex(' ', ltrim(rtrim(ani.edi835claimicn))) - 1)
    else
        ltrim(rtrim(ani.edi835claimicn))
end as icn

它只提取输入字符串中第一个空格字符之前的子字符串(列中的值
ani.edi835claimicn
)。如果字符串不包含空格,则按原样使用输入字符串。

示例数据、所需结果和您想要执行的操作的解释将非常有用。您只需获取此表达式并在单独的
SELECT
中为其提供一些值,然后替换
ani.edi835claimicn
,就可以轻松获得一些见解。特别是包含中间某个空间的值,以及不值得的值。非常感谢。这对我来说很有意义。