我正在将数据从旧表移动到SQL服务器新版本,并且正在努力寻找有希望有人可以帮助的东西。
我在旧表中有一个列,其名称为'EmployeeName',顺序为firstname.lastname。在新表中,我们将使用guid来识别员工。带有guid的表的名称的顺序是'lastname,firstname'所以我写的那个为员工提取guid的函数无法与名字匹配。
我如何在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
答案 0 :(得分:1)
这是一个开始:
您可以从firstname.lastname获取姓氏:
RIGHT(EmployeeName, LEN(EmployeeName) - CHARINDEX('.', EmployeeName))
同样,您可以从lastname获取lastname,firstname如下:
LEFT((EmployeeName, CHARINDEX('.', EmployeeName))
您可以连接名称和标点符号以获取所需的字符串。
您可以考虑使用TRIM来消除数据中的空白。