0

既存の列名を角かっこ[]で囲むことができるSQLコマンドがあるかどうか疑問に思っています。

たとえば、には、、、、というタイトルのMyTable列があります。これらを変更して、新しい列名が、、、、になるようにします。1234[1][2][3][4]

これを可能にするSQLステートメントはありますか?

4

3 に答える 3

0

SQL Serverでは、次のようなことができると思います。

select [1] as [[1]]], [2] as [[2]]] ...

奇妙な要件のようですが

于 2012-10-09T22:45:42.270 に答える
0

角かっこはSQLServer/T-SQL構文です。列名には、名前の一部として角かっこが含まれていません。角かっこは、SQLステートメントを作成するときに使用され、列名を予約済みのキーワードにすることができます。このようにして、「テーブル」という名前の列を作成できます。

CREATE TABLE [MyTable](
[Table] [nchar](10) NULL, 
[Column] [nchar](10) NULL, 
)
GO

SELECT [Table], [Column] from MyTable
GO
于 2012-10-09T22:46:12.517 に答える
0

Sql Server では、次のように機能します。

select 1 AS "[1]"

もちろん、これはリテラル整数 1 を選択します。1 というフィールドを選択するには、次のようにする必要があります。

select [1] AS "[1]"

私はコメンターに同意します。アイデア全体が危険に満ちているように見えますが、レガシー/独自のデータを扱っている場合、選択の余地がない場合があります.

これを自動的に行いたい場合は、次のコードを実行できます (または、再利用のためにストアド プロシージャにします)。

BEGIN
    DECLARE @Comma AS VARCHAR(2)
    DECLARE @Sql as VARCHAR(5000)
    DECLARE @Column AS VARCHAR(50)

    SET @Sql = 'SELECT '
    SET @Comma = ''

    DECLARE ColCsr CURSOR FOR
        SELECT COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'MyTable' 

    OPEN ColCsr
    FETCH NEXT FROM ColCsr INTO @Column

    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @Sql = @Sql + @Comma + @Column + ' AS "[' + @Column + ']"'
        SET @Comma = ', '
        FETCH NEXT FROM ColCsr INTO @Column
    END
    CLOSE ColCsr
    DEALLOCATE ColCsr

    SET @Sql = @Sql + ' FROM MyTable'

    EXEC (@Sql)
END
于 2012-10-09T22:44:12.877 に答える