Как объединить обновление и 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
«внедрить» персонажа, поскольку это кажется более чистым решением.