742

SQL Server 2008 と Navicat を使用しています。SQL を使用してテーブル内の列の名前を変更する必要があります。

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

このステートメントは機能しません。

4

11 に答える 11

1355

使用するsp_rename

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

参照: SQL SERVER – 列名またはテーブル名の名前を変更する方法

ドキュメント: sp_rename (Transact-SQL)

あなたの場合は次のようになります。

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

値を一重引用符で囲むことを忘れないでください。

于 2013-04-30T09:37:16.023 に答える
126

の代わりにSQL、Microsoft SQL Server Management Studio でこれを行うことができます。GUI を使用したいくつかの簡単な方法を次に示します。

最初の道

列をゆっくりとダブルクリックします。列名が編集可能なテキスト ボックスになります。


第二の道

列を右クリックし、コンテキスト メニューから [名前の変更] を選択します。

例えば:

列名を変更するには


第三の道

この方法は、一度に複数の列の名前を変更する必要がある場合に適しています。

  1. 名前を変更する必要がある列を含むテーブルを右クリックします。
  2. [デザイン] をクリックします。
  3. テーブル デザイン パネルで、変更する列名のテキスト ボックスをクリックして編集します。

例えば: MSSMS テーブルの設計例

注: OPがSQLソリューションを具体的に要求したことは知っていますが、これは他の人に役立つかもしれないと思いました:)

于 2014-02-06T16:46:09.257 に答える
68

試す:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
于 2013-04-30T09:39:08.837 に答える
36

テーブルのスキーマも指定する必要があります。そうしないと、次のエラーが発生する可能性があります。

メッセージ 15248、レベル 11、状態 1、プロシージャ sp_rename、行 238 パラメータ @objname があいまいであるか、要求された @objtype (COLUMN) が間違っています。

展開スクリプトの場合は、追加のセキュリティを追加することもお勧めします。

IF EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'OldColumnName' AND
            object_name(object_id) = 'TableName'
    ) AND
    NOT EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'NewColumnName' AND
            object_name(object_id) = 'TableName'
    )
    EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';
于 2015-11-19T13:08:51.060 に答える