2016-07-22 106 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)',這樣我們就可以弄清楚什麼是錯的。 –