更改字符串顺序 - Sql server

时间:2010-09-30 19:48:05

标签: sql-server-2005 string

我正在将数据从旧表移动到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

1 个答案:

答案 0 :(得分:1)

这是一个开始:

您可以从firstname.lastname获取姓氏:

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

同样,您可以从lastname获取lastname,firstname如下:

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

您可以连接名称和标点符号以获取所需的字符串。

您可以考虑使用TRIM来消除数据中的空白。