SQL列中的隐藏字符

时间:2016-07-22 08:12:26

标签: mysql sql utf-8

我已经复制并粘贴了一个只在表格中添加一列的SQL语句:

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

但是,在我复制和粘贴的位置,favourites名称有一些设法来获取隐藏的字符。

我在上面的示例中留下了隐藏字符,供您查看/或不查看它!

它是favourites?,似乎是一个问号。

问题:我需要删除此列并手动重新添加,以便隐藏的字符不存在。问题是我做的任何SQL语句,由于隐藏的字符而无法识别列名favourites,我不知道如何定位它。

有没有人知道怎么解决这个问题?

6 个答案:

答案 0 :(得分:1)

使用相同的用途

 SHOW COLUMNS FROM your_table;

获取列名,然后在删除命令中复制所需的列

 alter table your_table  drop column  your_column_copied

并添加具有正确名称的列

alter table your_table  add column  your_column

否则,如果不可能获取column_name,则可以使用create / select命令创建没有错误列的临时表

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

然后删除原始表并重命名临时表,最后添加具有正确名称的列

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分: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名候选人作为帮助你的候选人吗?

答案 4 :(得分:0)

要删除列,您可以使用:

alter table <tblname> drop column <colname> 

然后在删除列后,您可以通过编写以下代码来添加列:

ALTER TABLE users ADD COLUMN favourites​ TEXT;

答案 5 :(得分:-1)

一些可能性:

  • 使用phpmyadmin
  • 使用工具直接与数据库对话,如navicat等