Следующее объединяет формулы, предложенные Мэттом (Лима), в фактический запрос ОБНОВЛЕНИЯ; это также касается различных случаев, таких как
- когда есть только FirstName,
- при наличии начальных или конечных пробелов
- когда есть несколько пробелов, отделяющих имя от фамилии
В качестве альтернативы можно отказаться от дополнительных тестов, направленных на обеспечение пробела, добавив предложение WHERE (WHERE CustomerName like ('%%').
-- Ensure no leading nor trailing spaces
UPDATE myTable
SET CustomerName = TRIM(CustomerName)
UPDATE myTable
SET FirstName = TRIM(LEFT(TRIM(CustomerName),
CASE CHARINDEX(' ', CustomerName)
WHEN 0 THEN LEN(CustomerName)
ELSE CHARINDEX(' ', CustomerName) -1
END)),
LastName = CASE CHARINDEX(' ', CustomerName)
WHEN 0 THEN ''
ELSE TRIM(SUBSTRING(CustomerName, CHARINDEX(' ', CustomerName) + 1, LEN(CustomerName))
END