3

データベース内のすべてのテーブルのすべての列名を大文字に変更するために使用される SQL ステートメントはありますか? MS SQL サーバー。

それを行うためのSQLを取得しましたが、それが正しいかどうかはわかりません。

  1. 以下のSQLを実行します

    select 'exec sp_rename '''+b.name+'.'+a.name+''','''+UPPER(a.name)+''',''column'''
    from syscolumns a, sysobjects b 
    where a.id=b.id and b.type='U' 
    order by b.name
    
  2. 上記の結果をコピーして実行します

4

4 に答える 4

3

アプリケーションをSQL Server 2000から新しいエディションにアップグレードしていて、SQL Server の大文字と小文字の区別に苦労している場合は、データベースに大幅な変更を加える前に、SQL Server 2000 の互換性設定を調べることをお勧めします。

SQL Server 2008 Management Studio で

  1. データベースを右クリックpropertiesし、コンテキスト メニューで選択します。
  2. Optionsページに移動
  3. 上から 3 番目のドロップダウン。選択するCompatibility Level: SQL Server 2000

少なくともそれは時間がかかります。

編集:OPがデータベースをSQL Server 2005からSQL Server 2005の「新しい」データベースにアップグレードしているように見えるため、上記の戦略は最適ではない可能性があります。

于 2011-03-11T08:11:33.257 に答える
2

これを行うためのコマンドは1つではないと思います。

ただし、1 つまたは 2 つのカーソルと次のようなクエリを使用して、これを行うクエリを作成できるはずです。

select t.name As TableName, c.Column_Name
from sys.tables t
INNER JOIN information_schema.columns c ON c.Table_Name = t.Name
ORDER BY t.name 

これにより、データベース内のすべてのテーブルと列が返されます。

次に使用します。

sp_RENAME 'TableName.[OldColumnName]' , '[NewColumnName]', 'COLUMN'

各列の名前を変更します。

于 2011-03-11T08:18:03.033 に答える
1

簡単な答え-いいえ。

これを行う必要がある場合(そして多くの研究では、すべての大文字の名前が読みやすさを損なうことが示唆されています)、これらの大文字の名前で新しいテーブルを生成し、古いテーブルから新しいテーブルにデータをコピーし、古いテーブルを削除する必要があります、新しいテーブルの名前を変更し、すべての外部キー関係を再確立します。

これを行う正当な理由はありますか?

于 2011-03-11T08:12:07.320 に答える