この回答を2つの方法に分けました。最初の方法では、フルネーム フィールドを名、ミドルネーム、姓に分けます。ミドル ネームがない場合、ミドル ネームは NULL として表示されます。
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name,
If( length(fullname) - length(replace(fullname, ' ', ''))>1,
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1) ,NULL)
as middle_name,
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 3), ' ', -1) AS last_name
FROM registeredusers
この 2 番目の方法では、ミドル ネームを姓の一部と見なします。フルネーム フィールドから姓と名の列のみが選択されます。
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS first_name,
TRIM( SUBSTR(fullname, LOCATE(' ', fullname)) ) AS last_name
FROM registeredusers
substr、locate、substring_index などを使ってできるすばらしいことがたくさんあります。実際の混乱については、マニュアルを確認してください。http://dev.mysql.com/doc/refman/5.0/en/string-functions.html