0

我想知道是否有一个 SQL 命令可以让我将括号 [] 包裹在现有的列名周围。

例如,在 中MyTable,我有标题为123、的列4。我想更改这些,以便它们的新列名是[1], [2], [3], [4]

有没有让我这样做的 SQL 语句?

4

3 回答 3

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 回答
0

在 SQL Server 中,我猜你可以这样做:

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

不过,这似乎是一个奇怪的要求

于 2012-10-09T22:45:42.270 回答
0

括号是一种 SQL Server/T-SQL 语法。列名称没有括号作为名称的一部分。括号仅在编写 SQL 语句时使用,以允许该列名可以是一些保留关键字。这样你就可以有一个名为“table”的列:

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

SELECT [Table], [Column] from MyTable
GO
于 2012-10-09T22:46:12.517 回答