我想知道是否有一个SQL命令允许我在现有列名称周围包括括号[]。
例如,在MyTable
中,我的标题为1
,2
,3
,4
的列。我想更改这些内容,以便他们的新列名称为[1]
,[2]
,[3]
,[4]
。
是否有允许我这样做的SQL语句?
答案 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