我试图替代两个charachter在SQL中,当使用该脚本在多模式数据库 我收到此错误:无效的对象名称TABLE_2“
消息208,级别16,状态1,行1无效的对象名称 'PayPersonAccounts'。消息208,级别16,状态1,行1无效对象 名称'PayPersonAccounts'。消息208,级别16,状态1,行1无效 对象名称 'CMRDirectDeliveryPartHeader'
USE Test
DECLARE @Table NVARCHAR(MAX),@Column NVARCHAR(MAX)
DECLARE Table_Cursor CURSOR
FOR
SELECT T.name, /* Table */
C.name /* Column */
FROM sysobjects T,syscolumns C
WHERE T.id = C.id AND T.xtype = 'u' /* User Table */
AND (C.xtype = 99 /* ntext */
OR C.xtype = 35 /* text */
OR C.xtype = 231 /* nvarchar */
OR C.xtype = 167 /* varchar */
OR C.xtype = 175 /* char */
OR C.xtype = 239 /* nchar */)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @Table,@Column
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC ('Update [' + @Table + '] Set [' + @Column + '] = REPLACE(REPLACE(CAST([' + @Column + '] as nvarchar(max)), NCHAR(1610), NCHAR(1740)), NCHAR(1603), NCHAR(1705))')
FETCH NEXT FROM Table_Cursor INTO @Table,@Column
END CLOSE Table_Cursor
DEALLOCATE Table_Cursor
可以检查模式名称?可能的架构可能会有所不同.. –
总是最好使用schemaname.tablename –
小评论:你将如何处理计算列?他们也在这里被选中。如果可以,请使用'QUOTENAME'和'CONCAT'。只是看起来很整洁。 – Jens