拆分字符串,但仅在必要时

split string but only when necessary

我知道类似的问题在互联网上比比皆是,但我找不到确切的解决方案。我有两列 Firstname 和 Lastname,一些名字在列中有中间名首字母,一些姓氏在列中有“,后缀”。我以前使用过 LTRIM(RTRIM(SUBSTRING(lastname, 0, CHARINDEX(',', lastname)))) As lastnameLTRIM(RTRIM(SUBSTRING(FirstName, CHARINDEX(' ', FirstName) +1, 20 ))) AS FirstName,但是如果没有中间名 initial/name 或姓氏没有后缀,return 就是一个空白结果。我已经尝试了几种不同的组合,但没有成功。我需要一种方法来忽略中间名首字母(如果有)但仍然 return 名字(如果没有)(基于 space)并忽略姓氏后缀(如果有)但是仍然 return 如果没有姓氏(基于逗号)

尝试案例陈述。例如:

case when CHARINDEX(',', lastname) <> 0
   then LTRIM(RTRIM(SUBSTRING(lastname, 0, CHARINDEX(',', lastname))))
   else lastname
end As lastname

与您的名字表达方式类似。