2016-07-22 69 views
-2

我复制并粘贴一个SQL语句,它只是增加了一个列到表:隐藏字符

ALTER TABLE `users` ADD COLUMN `favourites​` TEXT; 

然而,在那里我有复制和粘贴,将favourites名字有一些如何成功地拿起一个隐藏的角色。

我已经在上面的例子中留下了隐藏的角色,让你看到/或看不到,因为它可能是!

这是favourites?与我认为是一个问号,但不是一个正常的?

问题:我需要删除此列并手动重新添加它,以便隐藏的字符不存在。问题是我做的任何SQL语句,它都不能识别列名favourites,因为这个愚蠢的隐藏字符!

有没有人有任何想法如何解决这个问题?

+0

不太清楚你为什么downvoting答案,谁试图人来帮助你在这里需要做的猜测和自然的答案可能并不一定量的工作。 – e4c5

+0

@ e4c5因为评论是为了猜测答案,找出更多...答案是答案。你应该更清楚。我已经提出了明确解读问题的那些人,并赞成那些没有提及的问题。这正是你应该做的。 – AdamJeffers

回答

0

也许打开表格的信息模式并从那里复制列名称?我不知道你在使用哪个数据库。请更新以获取更多信息。

如果您访问phpMyAdmin或者,如果你可以创建一个小的脚本来运行此脚本:

SELECT COLUMN_NAME, FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'your_tbl_name' 

OR

SHOW COLUMNS 
    FROM 'your_tbl_name 

,并从网页复制的列名。

下一个,你可以使用

alter table your_tbl_name drop column column_name; 

丢弃列,你已经知道如何添加在MySQL这样一个专栏中,我想应该解决您的问题。

我希望你确实知道,如果你的声望低于50,并且如果你没有提供足够的信息,那些实际上可能有你的答案,但低于50的代表你将不得不评论张贴在答案中。或者你想消除那些50个代表作为帮助你的候选人?

+0

我正在使用MySQL – AdamJeffers

0

为了删除列,你可以使用:

alter table <tblname> drop column <colname> 

,然后删除列之后,你可以添加列写下面的代码:

ALTER TABLE users ADD COLUMN favourites​ TEXT; 
+0

正如我所说,你不能引用colnam,因为colname不被识别! – AdamJeffers

+0

需要像'赞成%'或类似的东西,但不起作用 – AdamJeffers

1

做同样使用show

SHOW COLUMNS FROM your_table; 

用于获取列名,然后复制所需的列您的删除命令

alter table your_table drop column your_column_copied 

,并用正确的名字添加列

alter table your_table add column your_column 

否则,如果无法获得列名,你可以创建一个临时表,而不创建/选择命令错误的列

create table (col1, col2, col3) 
select col1,col2, col3 
from you_table 

然后删除原始表和重命名临时表和持续右名字

添加列
+0

不起作用。表格显示“收藏夹?”将隐藏的字符显示为问号,当复制并使用该列名时,它只会给出语法错误! – AdamJeffers

+0

未知列'收藏夹?'在'字段列表' – AdamJeffers

+0

我已经更新了答案..只是一个简单的建议 – scaisEdge

-1

一些可能性:

  • 使用phpMyAdmin
  • 使用工具来直接对话一样的Navicat等数据库
1

你可以使用动态查询:

DECLARE @sql nvarchar(800) 

SELECT @sql = 'ALTER TABLE users DROP COLUMN ' + COLUMN_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'users' and COLUMN_NAME LIKE '%favour%' 

EXEC sp_executesql @sql 
+0

OP意味着基于MySQL的解决方案,而不是MS SQL Server。 'sp_executesql'在MySQL中不可用。无论如何,好想... –

1

您可以获取通过查询INFORMATION_SCHEMA获得列名,并使用获取的列名准备语句。事情是这样的:

DECLARE @StrangeColumnName NVARCHAR(16) := '' 

SELECT @StrangeColumnName := COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'users' AND COLUMN_NAME LIKE 'favourites%' 

DECLARE @SqlText NVARCHAR(32) := 'ALTER TABLE status DROP COLUMN ?' 
EXECUTE @SqlText USING @StrangeColumnName 
+0

选择'HEX(COLUMN_NAME)',这样我们就可以弄清楚什么是错的。 –