execute sp_rename 'www"qqq"rrr''tt[yy]]d.uu"dkf''d[ff]]pp','wang','column'
其中表名是:www"qqq"rrr'tt[yy]d
字段名是:uu"dkf'd[ff]pp
新字段名是:wang
出现错误:标识符 'www"qqq"rrr'tt[yy]]d.uu"dkf'd[ff]]pp' 时发现语法错误。
像这种表名和字段名都含有' " []符号的情况怎么更改字段名啊?
请高手们赐教!
---------------------------------------------------------------
--规则:用[]把对象名标识出来,对象名中出现的],用两个]]表示
EXECUTE sp_rename N'[www"qqq"rrr''tt[yy]]d].[uu"dkf''d[ff]]pp]', N'wang', 'COLUMN'
---------------------------------------------------------------
--修改示例
--创建对象
CREATE TABLE [www"qqq"rrr'tt[yy]]d]
(
[uu"dkf'd[ff]]pp] int NULL
)
go
--显示名称是否正确
select 表名=o.name,字段名=c.name
from sysobjects o,syscolumns c
where o.name='www"qqq"rrr''tt[yy]d'
and o.id=c.id
/*--测试结果
表名 字段名
--------------------- -----------------
www"qqq"rrr'tt[yy]d uu"dkf'd[ff]pp
(所影响的行数为 1 行)
--*/
go
--修改字段名
EXECUTE sp_rename N'[www"qqq"rrr''tt[yy]]d].[uu"dkf''d[ff]]pp]', N'wang', 'COLUMN'
GO
--显示修改结果
select 表名=o.name,字段名=c.name
from sysobjects o,syscolumns c
where o.name='www"qqq"rrr''tt[yy]d'
and o.id=c.id
/*--测试结果
注意: 更改对象名的任一部分都可能破坏脚本和存储过程。
COLUMN 已重命名为 'wang'。
表名 字段名
--------------------- -----------------
www"qqq"rrr'tt[yy]d wang
(所影响的行数为 1 行)
--*/
go
--删除测试
drop table [www"qqq"rrr'tt[yy]]d]
---------------------------------------------------------------
--你可以用这个函数来生成有效的对象名
--注意字符串中的',一律用两个'表示
select quotename('www"qqq"rrr''tt[yy]d')
+'.'
+quotename('uu"dkf''d[ff]pp')
--结果: [www"qqq"rrr'tt[yy]]d].[uu"dkf'd[ff]]pp]
--把这个用于 sp_rename 中就可以了(还是要注意字符串中的',一律用两个'表示)
--或者,你可以直接用下面的语句来得到你的表名+字段名的字符串表示
select quotename(quotename('www"qqq"rrr''tt[yy]d')
+'.'
+quotename('uu"dkf''d[ff]pp'),'''')
--结果: '[www"qqq"rrr''tt[yy]]d].[uu"dkf''d[ff]]pp]'