检查mySQL中是否存在列

时间:2015-06-21 17:31:30

标签: mysql matlab exists

我之前已经问过这个问题,但由于某种原因,建议的解决方案在我的设置中不起作用。  我在windows上的matlab中调用mySQL数据库,需要在脚本开始计算该列的值之前检查给定的表是否有特定的列。 从以前的答案,我得到以下应该帮助我确定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块中,但这感觉不对。任何人都可以提出一个好的方式来询问存在而不会产生错误吗?

1 个答案:

答案 0 :(得分:1)

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

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

或者您可以使用"显示列"命令:

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

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