要件が独特だと思います。1: 講師は、名前の多くの一般的な要素とルールの例外を無視する解決策を求めるだろう (私には 2 つのミドル ネームがあり、ミドル ネームを持たない多くの人を知っています。最後に 2 つまたは 3 つの単語を持つ人を知っています)名前)。CHARINDEX
2:とに制約されることSUBSTRING
。3: 問題へのアプローチ方法を適切に説明する (または、自分で学ぶための時間とリソースを提供する) ことなく、この問題の解決策を求めてくること。
言ったことすべて:
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;