0

数値に置き換える必要があるフロア名のテーブルがあります。手動でルックアップ テーブルを作成しています。次に何をすべきかわからない...もっと良い方法はありますか?

スクリーンショット: 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

また、問題は次のとおりです。一部のフロアにはFirstFirst floorなどの名前が付けられています。

4

1 に答える 1

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ます。

また、母音や長い名前を恐れないでください。LookupFloorNumberは実際にはとよりもはるかに簡単に入力できます。LkupFloorNum

于 2013-03-13T14:42:01.227 に答える