Mysql SQL列中的隐藏字符
我复制并粘贴了一条SQL语句,它只向表中添加了一列:Mysql SQL列中的隐藏字符,mysql,sql,utf-8,Mysql,Sql,Utf 8,我复制并粘贴了一条SQL语句,它只向表中添加了一列: ALTER TABLE `users` ADD COLUMN `favourites` TEXT; 然而,在我复制和粘贴的地方,收藏夹名称有一些方法可以找到隐藏的字符 我在上面的例子中留下了隐藏的字符,让你看/不看它可能是什么样子 这是最受欢迎的?,上面似乎有一个问号 问题:我需要删除此列并手动重新添加,以便隐藏的字符不存在。问题是,我使用的任何SQL语句都无法识别列名收藏夹,因为隐藏字符,我不知道如何定位它 有人知道如何解决这个问题吗?
ALTER TABLE `users` ADD COLUMN `favourites` TEXT;
然而,在我复制和粘贴的地方,收藏夹
名称有一些方法可以找到隐藏的字符
我在上面的例子中留下了隐藏的字符,让你看/不看它可能是什么样子
这是最受欢迎的?
,上面似乎有一个问号
问题:我需要删除此列并手动重新添加,以便隐藏的字符不存在。问题是,我使用的任何SQL语句都无法识别列名收藏夹
,因为隐藏字符,我不知道如何定位它
有人知道如何解决这个问题吗?也许可以打开表的信息架构并从中复制列名?我不知道你在用哪个数据库。请更新以获取更多信息 如果您有权访问phpMyAdmin,或者如果您可以创建一个小脚本来运行此脚本:
SELECT COLUMN_NAME, FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'your_tbl_name'
或
并从页面复制列名
接下来,您可以使用
alter table your_tbl_name drop column column_name;
您已经知道如何在mysql中添加列,所以我想这应该可以解决您的问题
我希望你知道,如果你的声誉低于50,你不能发表评论,如果你没有提供足够的信息,那些实际上可能有答案的人,但是低于50的代表,将不得不在答案中发布它。或者,您是否希望将50名代表排除在候选名单之外,以帮助您?删除您可以使用的列:
alter table <tblname> drop column <colname>
做同样的用途显示
SHOW COLUMNS FROM your_table;
获取列名,然后在delete命令中复制所需的列
alter table your_table drop column your_column_copied
然后添加具有正确名称的列
alter table your_table add column your_column
否则,如果无法获取列名称,则可以使用create/select命令创建临时表,而不使用错误的列
create table (col1, col2, col3)
select col1,col2, col3
from you_table
然后删除原始表并重命名临时表,最后添加具有正确名称的列一些可能性:
- 使用phpmyadmin
- 使用工具直接与数据库对话,如navicat等
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
您可以通过查询
INFORMATION\u 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
我已经更新了答案。。有一个小小的建议,不太清楚你为什么对答案投反对票,在这里试图帮助你的人需要做一些猜测,当然答案可能根本不起作用。OP暗示的是基于MySQL的解决方案,而不是MS SQL Server<代码>sp_executesql在MySQL中不可用。不管怎么说,想法不错……选择
HEX(列名)
,这样我们就可以找出问题所在。
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
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