2015-06-21 48 views
0

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

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块中,但是那感觉不对。任何人都可以提出一个好的方法来询问存在而不会产生错误吗?

+0

如果你需要这样做,你的设计会出现严重错误 – Strawberry

+0

@Strawberry:这是一个非常偏见的评论。我使用数据库来收集一系列数学模型的仿真结果。当收集结果时,在数据库中进行输入。由于模型不同,需要保存不同的信息(因此不同表格中的不同列)。我希望你会同意在多个地方对我的表格进行描述比在一个地方描述更容易出错。如果我只是问桌子上有什么信息,我只能在一个地方做出改变。 – Kaare

回答

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来测试一列是否存在。如果您仔细分析错误信息,我不认为有任何副作用。