2016-04-18 155 views
1

我有这样如何从MySQL表从MATLAB变量(阵列/细胞)选择

The table in mysql

一个表,我在MATLAB变量x

x=[1 5 6 8 10 21 99]; 

现在我想选择像这样

select * from tablename where key1 = x 

我知道mysql查询必须是字符串,而我的变量x in matlab可能是太长了。 那么如何在matlab中做到这一点?我搜索失败。由于

conn = database('instancename','username','password'); 

我知道我能做到这一点像

sql = 'select * from tablename where key in (1,5,6,8,10,21,99)' 

的问题是我的X不是恒定的,有时可能是一个1个* N细胞(其元素是char),我想把它写成脚本。

+0

您是否能够通过MATLAB连接到SQL数据库,而您只是问如何构造您的查询字符串?或者你问如何从MATLAB连接? – Dan

+0

是的,我可以连接到数据库。我在问如何在matlab脚本中构建查询@Dan – Blackblack

+0

请添加用于连接到数据库的代码。在MATLAB中有很多方法可以做到这一点。指定您是否正在使用工具箱 – Dan

回答

0

在SQL Server中,你写你这样的查询:

select * from tablename where key1 in {1, 5, 6, 8, 10, 21, 99} 

我不知道我的SQL,但我想这是非常相似的。这意味着所有你需要做的是转换x字符串'1, 5, 6, 8, 10, 21, 99',你可以这样做:

x_str = strjoin(cellstr(num2str(x'))',',') 

现在整个查询变得

query = sprintf('SELECT * FROM tablename WHERE key1 IN {%s}', x_str); 

顺便说一句,另辟蹊径,开创x_str可能是:

x_str = sprinft('%d, ', x); 
x_str(end) = []; 
+1

谢谢,似乎没有更好的办法。我以为我可以直接将x输入到mysql的内存中,然后让mysql使用它作为条件。 – Blackblack