代码之家  ›  专栏  ›  技术社区  ›  GKC

如何在sql server数据库中组合更新和sp_rename

  •  0
  • GKC  · 技术社区  · 2 年前

    我有一个SQL Server数据库 employeedb 和表 employee 带列 EmployeeID 我需要更新并同时重命名该列的值。

    EmployeeID
    -----------
    83456785647
    

    我需要添加 '-' 从末尾开始放置两位数并重命名 员工编号 EmployeeNr 以获得以下输出

    EmployeeNr
    ------------
    834567856-47
    

    我可以通过运行以下两个独立的SQL语句来逐步实现所需的结果:

    update employee 
    set EmployeeID = substring(cast(EmployeeID as varchar(255)), 1, len(cast(EmployeeID as varchar(255)))-2) + '-' + right(cast(EmployeeID as varchar(255)), 2)
    

    为了更改列名,我执行一个单独的查询,如下所示:

    USE employeedb;
    GO
    
    EXEC sp_rename 'employee.EmployeeID', 'EmployeeNr', 'COLUMN';
    GO
    

    有没有一种方法可以将两个语句合并到一个SQL语句中?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Thom A    2 年前

    相反,我建议你不要做任何一个 UPDATE 或者重命名该列;ID很可能是主键,用于引用完整性,因此更改其值 重新命名它可能会破坏很多东西。

    相反,添加“Nr”列作为计算列:

    ALTER TABLE dbo.Employee
    ADD EmployeeNr AS STUFF(EmployeeID, LEN(EmployeeID)-1,0,'-');
    

    我也切换到 STUFF “注入”角色,因为这似乎是一个更清洁的解决方案。