2016-04-18 9 views
1

Ich habe eine Tabelle wie diesewie aus MySQL-Tabelle aus Matlab Variable auszuwählen (Array/Zelle)

The table in mysql

und ich habe eine Variable x in Matlab

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

jetzt will ich wählen wie diese

select * from tablename where key1 = x 

ich weiß, mySQL Query-String sein muss, und meine Variable x in Matlab kann zu lang sein. Also, wie geht das in Matlab? Ich habe es versäumt zu suchen. Dank

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

Ich weiß, ich kann dies tun wie

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

Die Frage ist meine x nicht konstant ist und irgendwann könnte eine 1 * N Zelle (deren Element char), ich möchte setze es in ein Skript.

+0

Können Sie eine Verbindung zu einer SQL-Datenbank über MATLAB noch herstellen und Sie fragen nur, wie Sie Ihre Abfragezeichenfolge erstellen? Oder fragen Sie sich, wie Sie sich überhaupt von MATLAB aus verbinden können? – Dan

+0

Ja, ich kann eine Verbindung zur Datenbank herstellen. Ich frage, wie man Abfrage in Matlab-Skript @Dan – Blackblack

+0

konstruieren Bitte fügen Sie den Code, den Sie verwenden, um eine Verbindung mit der DB. Es gibt viele Möglichkeiten, dies in MATLAB zu tun. Geben Sie an, ob Sie eine Toolbox verwenden – Dan

Antwort

0

In SQL Server schreiben Sie Ihre Abfrage wie folgt:

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

ich über meine SQL weiß nicht, aber ich glaube, es ist sehr ähnlich. Was bedeutet, dass alles, was Sie tun müssen, ist x auf den String konvertieren '1, 5, 6, 8, 10, 21, 99', die Sie wie dies tun könnte:

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

und jetzt die ganze Abfrage wird

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

Als beiseite, auf eine andere Art und Weise x_str erstellen könnte sein:

+1

Danke, scheint keinen besseren Weg. Ich dachte, ich könnte das x direkt in mysqls Speicher eingeben und es dann von mysql als Bedingung verwenden lassen. – Blackblack