我有一个旧表,其名称包含不可打印的字符(CHAR(31),具体来说)。
不可打印的字符位于下划线旁边,我发现快捷方式CTRL+SHIFT+_创建了该CHAR(31)字符(这意味着“美国” - 单位分隔符)。以前的开发人员可能会错误地使用这个组合,并创建了包含这个奇怪字符的表格。
当我们SELECT对表发出命令时,它会返回结果。但是,当我们试图发出反对任何DDL( ,DROP,sp_rename等),字符会导致一个问题。
例子:
DROP TABLE Table_Name;
Run Code Online (Sandbox Code Playgroud)
提高:
消息 15225 - 在当前数据库 'MyDB' 中找不到名为 'Table_Name' 的项目,因为@itemtype 被输入为 '(null)'。
EXEC sp_rename N'Table_Name', N'NewTableName';
Run Code Online (Sandbox Code Playgroud)
提高:
消息 102 - '_Name' 附近的语法不正确。
我已经用正确的名称复制了表,并在相关对象上更正了它。剩下的步骤就是将它从数据库中删除。
只是一个见解:当我们从 SQL Server 复制+粘贴到 Notepad++ 时,它会在表名中间显示隐藏字符(“US”),在下划线旁边: