Azzera filtri
Azzera filtri

How to modify the built-in 'fetch' function so that it can select columns flexibly?

1 visualizzazione (ultimi 30 giorni)
I was trying to write a function which fetch only the columns I like from a MySQL table.
easy_fetch(conn, 'mytable', 'A', 'B') % error, incorrect sqlquery string
easy_fecth(conn, 'mytable', 'A,', 'B') % this works but clumsy
function T = easy_fetch (conn, tablename, varargin)
sqlquery = ['select ' varargin{:} ' from ' tablename]; % I don't know how to insert commas here.
T = fetch(conn, sqlquery);
end
That fuction does not create right sql query string because it doesn't have commas between A and B
wrong_string = 'select A B from mytable'.
fetch(conn, wrong_string) % error
% the correct query string should have commas between A and B
right_string = 'select A, B from mytable'
fecth(conn, right_string) % success
How would I put ',' between A and B in the easy_fetch function? Or is there better way to flexibly fetch columns? I have checked out a couple packages shared in File Exchange. None has codes I can use. Thanks for any suggestions.

Risposta accettata

Steven Lord
Steven Lord il 10 Nov 2022
s = {'Larry', 'Curly', 'and Moe'}
s = 1×3 cell array
{'Larry'} {'Curly'} {'and Moe'}
s2 = strjoin(s, ', ')
s2 = 'Larry, Curly, and Moe'
  1 Commento
Simon
Simon il 10 Nov 2022
I am very thankful for your solution. It works! The modified version does what I want.
T = easy_fetch(conn, 'mytable', 'A', 'B') % works smoothly :-)
%%
function T = easy_fetch (conn, tablename, varargin)
cols = strjoin(varargin, ',');
sqlquery = ['select ' cols ' from ' tablename];
T = fetch(conn, sqlquery);
end

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by