我知道互联网上有类似的问题,但我找不到这个问题的解决方案。我有两列Firstname和Lastname,一些名字在列中有中间的首字母,一些姓氏在列中有',suffix'。我之前使用过LTRIM(RTRIM(SUBSTRING(lastname, 0, CHARINDEX(',', lastname)))) As lastname
和LTRIM(RTRIM(SUBSTRING(FirstName, CHARINDEX(' ', FirstName) +1, 20 ))) AS FirstName
但如果没有中间名/姓名或没有姓氏后缀,则会返回空白结果。我尝试了几种不同的组合,没有运气。我需要一种方法来忽略一个中间的初始,如果有一个但仍然返回第一个名称,如果没有一个(基于空格)并忽略姓氏后缀,如果有一个,但仍然返回姓氏,如果有不是(基于逗号)
答案 0 :(得分:2)
尝试一个案例陈述。例如:
case when CHARINDEX(',', lastname) <> 0
then LTRIM(RTRIM(SUBSTRING(lastname, 0, CHARINDEX(',', lastname))))
else lastname
end As lastname
与您的名字表达式相似。