Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 重命名名称开头带有引号的列_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 重命名名称开头带有引号的列

Sql 重命名名称开头带有引号的列,sql,sql-server,tsql,Sql,Sql Server,Tsql,我从导入中得到了具有未知列名的表,我正在尝试重命名其名称。例如: DECLARE @Col1 nvarchar(128); SELECT @Col1 = COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = mytable and ordinal_position = 1; DECLARE @ColName nvarchar(255); SET @ColName = '[mytable.' + @Col1 + ']';

我从导入中得到了具有未知列名的表,我正在尝试重命名其名称。例如:

DECLARE @Col1 nvarchar(128);

SELECT @Col1 = COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = mytable and ordinal_position = 1;

DECLARE @ColName nvarchar(255);
SET @ColName = '[mytable.' + @Col1 + ']';
sp_RENAME @ColName, '[MyColumn]', 'COLUMN';
@Col1
从引号开始,如
“RudeColumName
并返回:
靠近“sp_RENAME”的语法不正确时,它不起作用。
使用
ALTER TABLE
进行重命名也不起作用,并返回语法错误

如何重命名此列?

试试这个

DECLARE @Col1 nvarchar(128);

SELECT @Col1 = COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = mytable and ordinal_position = 1;

DECLARE @ColName nvarchar(255);
SET @ColName = '[mytable.''' + @Col1 + ']';
sp_RENAME @ColName, '[MyColumn]', 'COLUMN';
用括号代替括号怎么样

DECLARE @Col1 nvarchar(128);

SELECT @Col1 = COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = mytable and ordinal_position = 1;

DECLARE @ColName nvarchar(255);
SET @ColName = QUOTENAME('mytable.' + @Col1);
sp_RENAME @ColName, '[MyColumn]', 'COLUMN';
QUOTENAME()
是正确使用的函数。以下是使用方法:

DECLARE @Col1 nvarchar(128);

SELECT @Col1 = COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = mytable and ordinal_position = 1;

DECLARE @ColName nvarchar(255);
SET @ColName = QUOTENAME('mytable') + '.' + QUOTENAME(@Col1);

sp_RENAME @ColName, '[MyColumn]', 'COLUMN';
注:表名和列名分别使用


当然,您可能还需要在新名称周围添加
QUOTENAME()
。另一方面,不要使用需要引用的新列名。

不幸的是,同样的语法错误再次出现。也许我需要添加
PRINT@Col1
的结果:我的代码:
[mytable.”RudeColumName]
您的:
[mytable.”“RudeColumName]
但它也不起作用。