代码之家  ›  专栏  ›  技术社区  ›  Taryn Frank Pearson

更改字符串顺序-SQL Server

  •  1
  • Taryn Frank Pearson  · 技术社区  · 15 年前

    我正在将数据从一个旧表移动到一个新的SQL Server版本,并正在努力解决一些希望有人能帮助解决的问题。

    我在旧表中有一列,按firstname.lastname的顺序排列为“employeename”。在新表中,我们将使用一个guid来标识员工。guid为的表的名称顺序为“lastname,firstname”,因此我为提取雇员guid而编写的函数与名称不匹配。

    如何在SQL Server中将“firstname.lastname”转换为“firstname,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 回复  |  直到 15 年前
        1
  •  1
  •   DOK    15 年前

    下面是一个开始:

    您可以从firstname.lastname获得lastname,如下所示:

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

    类似地,您可以从lastname获得lastname,firstname如下:

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

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

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