如何创建具有括号的SQL列名称

时间:2012-10-09 22:34:02

标签: mysql sql brackets

我想知道是否有一个SQL命令允许我在现有列名称周围包括括号[]。

例如,在MyTable中,我的标题为1234的列。我想更改这些内容,以便他们的新列名称为[1][2][3][4]

是否有允许我这样做的SQL语句?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

虽然似乎是一个奇怪的要求

答案 2 :(得分: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