我有一个地板名称表,我需要用数值替换。我正在手工构建查找表。不知道下一步该做什么......有更好的方法吗?
屏幕截图:http://i49.tinypic.com/2mc921e.png
BEGIN TRY
BEGIN TRANSACTION
-- lookup table
DECLARE @FloorLkup TABLE(
FloorName VARCHAR(MAX) NOT NULL,
FloorNum INT NOT NULL
);
INSERT INTO @FloorLkup SELECT 'First floor', '1'
INSERT INTO @FloorLkup SELECT 'First', '1'
INSERT INTO @FloorLkup SELECT 'Second floor', '2'
INSERT INTO @FloorLkup SELECT 'Second', '2'
-- etc.
INSERT INTO @FloorLkup SELECT 'Ninth', '9'
print 'Done'
COMMIT TRANSACTION
END TRY
BEGIN CATCH
print 'Did not work'
ROLLBACK
END CATCH
此外,问题是:某些楼层的名称为First
和First floor
等。
答案 0 :(得分:1)
-- populate your @FloorLkup table here
-- now add a new numeric column:
ALTER TABLE dbo.UnknownTableName
ADD FloorNumber INT;
-- now update based on matches in @FloorLkup
UPDATE t
SET FloorNumber = fl.FloorNum
FROM dbo.UnknownTableName AS t
INNER JOIN @FloorLkup AS fl
ON t.FloorName = fl.FloorName;
-- check your work
SELECT * FROM dbo.UnknownTableName;
-- if it's correct:
ALTER TABLE dbo.UnknownTableName
DROP COLUMN FloorName;
您必须将UnknownTableName
替换为目的地表的名称,因为您忘了告诉我们。您可能还需要删除任何约束或对FloorName
列的其他显式引用,然后才能删除它。
另外请不要害怕元音或更长的名字。与Lookup
和FloorNumber
相比,Lkup
和FloorNum
实际上更容易输入 LOT 。