我觉得要求很特别。一:讲师会要求一种解决方案,忽略名称中的许多常见元素和规则的例外情况(我有两个中间名,我认识很多没有中间名的人,我知道最后有两个或三个单词的人名称)。二:他们会限制你CHARINDEX
和SUBSTRING
。三:他们会在没有向您充分解释(或给您时间和资源以自行学习)您应该如何解决问题的情况下要求您解决此问题。
说了这么多:
DECLARE @t TABLE(StaffName NVARCHAR(255));
INSERT @t
SELECT 'Edy Harsono'
UNION ALL SELECT 'Dian Felita Tanoto'
UNION ALL SELECT 'Lisa Van der Hosen';
SELECT
SUBSTRING
(
StaffName,
CHARINDEX(' ', StaffName)+1,
CHARINDEX(' ', SUBSTRING(StaffName, CHARINDEX(' ', StaffName)+2, 255))
) FROM @t
WHERE LEN(RTRIM(StaffName)) - LEN(REPLACE(RTRIM(StaffName), ' ', '')) = 2;
结果:
Felita
1 row(s) affected.
如果您可以删除CHARINDEX
/SUBSTRING
要求,则稍微更聪明的方法是:
SELECT PARSENAME(REPLACE(StaffName, ' ', '.'), 2)
FROM @t
WHERE LEN(RTRIM(StaffName)) - LEN(REPLACE(RTRIM(StaffName), ' ', '')) = 2;