Изменить порядок строк - Sql сервер - PullRequest
1 голос
/ 30 сентября 2010

Я перемещаю данные из старой таблицы в новую версию SQL-сервера и борюсь с чем-то, с чем, надеюсь, кто-то может помочь.

У меня есть столбец в старой таблице с именем «EmployeeName» в порядке firstname.lastname. В новой таблице мы будем использовать руководство для идентификации сотрудников. Таблица с указателями содержит имена в порядке «фамилия, имя», поэтому моя функция, которую я написал для получения указателя для сотрудника, не соответствует именам.

Как я могу в SQL-сервере преобразовать firstname.lastname в lastname, firstname?

вот функция, которую я написал:

ALTER FUNCTION [Wire].[udf_GetEmployeeGuid_FromName]
( @EmployeeName   VARCHAR(50)  -- format 'firstname.lastname')
RETURNS uniqueidentifier
AS
BEGIN
DECLARE @EmployeeGuid     uniqueidentifier
SELECT @EmployeeGuid = GUID
FROM B.Employees  --format 'lastname, firstname'
WHERE LEFT(@EmployeeName, CHARINDEX('.', @EmployeeName)) = RIGHT([Name], LEN([Name]) - CHARINDEX(', ', [Name]))
RETURN IsNull(@EmployeeGuid, '00000000-0000-0000-0000-000000000000')
END

1 Ответ

1 голос
/ 01 октября 2010

Вот начало:

Вы можете получить фамилию из firstname.lastname следующим образом:

RIGHT(EmployeeName, LEN(EmployeeName) - CHARINDEX('.', EmployeeName))

Аналогично, вы можете получить фамилию из фамилии, имя, напримерthis:

LEFT((EmployeeName, CHARINDEX('.', EmployeeName))

Вы можете объединить имена и знаки препинания, чтобы получить желаемую строку.

Вы можете также рассмотреть возможность использования TRIM для устранения пробелов в данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...