检查 mySQL 中是否存在列

Check for column existence in mySQL

我知道之前有人问过这个问题,但出于某种原因,建议的解决方案在我的设置中不起作用。 我在 windows 上从 matlab 中调用一个 mySQL 数据库,并且需要在我的脚本开始计算该列的值之前检查给定的 table 是否有特定的列。 从以前的答案中,我得到以下内容应该可以帮助我确定 col1 是否存在:

select exists (select * from table1 where col1=val1)

如果 col1 存在,这就可以正常工作。但是,当我没有得到以下信息时:

>> fetch(conn,'select exists (select * from model12B where col1=.5)')

Error using database/fetch (line 37)
[MySQL][ODBC 5.3(a) Driver][mysqld-5.5.37-log]Unknown column 'col1' in 'where clause'

这看起来更像是 MySQL 错误,而不是 matlab 错误,因此我将其定义为 MySQL 问题。我当然可以将其包装在 try-catch 块中,但感觉不对。任何人都可以提出一种在不产生错误的情况下请求存在的好方法吗?

您可以使用 information_schema 来告诉您该列是否存在于指定的数据库中并指定 table :

 select * from information_schema.columns where table_name='tablename' and table_schema='databasename' and and column_name='columnname'

或者你可以使用"show columns "命令:

 show columns from databasename.tablename where like 'columnname';

当然,您可以使用 try - catch 来测试列是否存在。如果您仔细分析错误消息,我认为不会有任何副作用。