如果我的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'
答案 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%时间是列出所有可能的组合 - 这通常是不可能的。然后,你将结束上面的一些丑陋的代码。