2015-06-21 49 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來測試一列是否存在。如果您仔細分析錯誤信息,我不認爲有任何副作用。