我想知道是否有一个 SQL 命令可以让我将括号 [] 包裹在现有的列名周围。
例如,在 中MyTable
,我有标题为1
、2
、3
、的列4
。我想更改这些,以便它们的新列名是[1]
, [2]
, [3]
, [4]
。
有没有让我这样做的 SQL 语句?
在 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
在 SQL Server 中,我猜你可以这样做:
select [1] as [[1]]], [2] as [[2]]] ...
不过,这似乎是一个奇怪的要求
括号是一种 SQL Server/T-SQL 语法。列名称没有括号作为名称的一部分。括号仅在编写 SQL 语句时使用,以允许该列名可以是一些保留关键字。这样你就可以有一个名为“table”的列:
CREATE TABLE [MyTable](
[Table] [nchar](10) NULL,
[Column] [nchar](10) NULL,
)
GO
SELECT [Table], [Column] from MyTable
GO