It's not that SQL databases are inefficient at text processing, but since SQL tends to treat a column as an atomic value, the operations to work on substrings and other parts of values aren't very convenient.
For example, in MySQL, it's kind of awkward to try to split a string into an array. There really isn't an array data type.
The closest thing is SUBSTRING_INDEX(). You can get a substring based on a character separator. In this case, use a space as the separator.
mysql> SET @name = 'Samuel Leroy Jackson';
mysql> SELECT SUBSTRING_INDEX(@name, ' ', -1) AS `last name`,
-> SUBSTRING_INDEX(@name, ' ', 1) AS `first name`,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(@name, ' ', 2), ' ', -1) AS `middle name`;
+-----------+------------+-------------+
| last name | first name | middle name |
+-----------+------------+-------------+
| Jackson | Samuel | Leroy |
+-----------+------------+-------------+
You'll have to work out how to handle cases when you have optional "Jr." or other names with more than three words. I suggest you read the doc I linked to for SUBSTRING_INDEX(), and also take the time to read about other string functions on that same page.