Как объединить обновление и sp_rename в базе данных SQL Server

У меня есть база данных SQL Serveremployeedbи столemployeeсо столбцом, значение которого мне нужно обновить и одновременно переименовать этот столбец.

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

мне нужно добавить'-'2-значные места с конца и переименоватьEmployeeIDк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 ответ

Вместо этого я бы посоветовал вам не делать ниUPDATEили переименуйте столбец; идентификатор, скорее всего, является первичным ключом и используется для обеспечения ссылочной целостности, поэтому изменение его значения и переименование, скорее всего, приведет к поломке множества вещей.

Вместо этого добавьте столбец «Nr» как вычисляемый столбец:

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

я тоже перехожу наSTUFF«внедрить» персонажа, поскольку это кажется более чистым решением.

Другие вопросы по тегам