删除中间初始的SQL

时间:2018-04-18 12:48:43

标签: sql-server

如果我的Name列的值为Jackson, BG Lisa F,我只想提取BG Lisa我该怎么做?

 LEFT(SUBSTRING(a.member_name,
                CHARINDEX(',', a.member_name) + 1, LEN(a.member_name)),
                CHARINDEX(' ', 
                          SUBSTRING(a.member_name, CHARINDEX(',', a.member_name) + 1, LEN(a.member_name)))) AS 'Newborn First Name'

1 个答案:

答案 0 :(得分:1)

因为你只举了一个例子......

declare @name varchar(64) = 'Jackson, BG Lisa F'


select 
    left(right(@name,(len(@name) - charindex(',',@name))),len(right(@name,(len(@name) - charindex(',',@name)))) - 1)

当然,如果不存在最后一个字符,或者如果你有一堆其他名称组合,这将会返回意外结果。关于从全名解析名称的问题有很多问题,你会发现的是共识是没有找到适合所有人的所有解决方案。不同的文化有不同的名称,使用连字符,使用UNICODE字符,有不同的顺序,有时只使用分隔符等等。所以,唯一的方法让你得到一个适合你的解决方案100%时间是列出所有可能的组合 - 这通常是不可能的。然后,你将结束上面的一些丑陋的代码。

相关问题