Matlab Database Toolbox join

1 view (last 30 days)
Brian
Brian on 27 Apr 2012
I am wrting a SQL query to pull a list of securities from a table that I am connecting to via ODBC connection. What I'd like to do is filter this query (specifically the FundTicker field) by the list of tickers that I have in my cell variable called "Test". I am wondering if I can even do this. Will it ever see a variable as another table that I can join with? Or do I need to do something different with my variable before the "like" statement will workj. Right now my Test variable is below. Does this need to be a character variable?
Test = {'AAAGX'; 'FNEVX'};
Query SQL
e = exec(conn,'SELECT ALL MSTARFUNDID,ASOFDATE,FUNDTICKER FROM MSTAR.FUNDHEADER WHERE ASOFDATE = ''2004-12-31'' AND FUNDTICKER IN ' Test);
Thanks for the help, Brian

Accepted Answer

the cyclist
the cyclist on 28 Apr 2012
I don't know of a way to access the contents of a cell array as part of a query. I had a similar issue in which I wanted to access the contents of a numerical array, but the only way I could think to do it was to construct the string:
numericArray = [1 2 3];
preliminaryString = sprintf('%d,',numericArray);
stringList = ['(',preliminaryString(1:end-1),')'];
This gives the string '(1,2,3)' as result, which I then use in my query.
I'm afraid you'll have to do the equivalent for your cell.
  3 Comments
Brian
Brian on 30 Apr 2012
I tried to create the IN filter manually and am still having difficulty getting the query to accept. Would you mind assisting me with that?
Brian
Brian on 3 May 2012
I ended up creating a for loop but using the same ideas that you have here. I couldn't get sprintf to work proprely with text. Here is my ending code.
PGQryFilt = ['''' MonthlyPG{1} ''''];
for i = 1:length(MonthlyPG)
PGQryFilt = [PGQryFilt ', ' '''' MonthlyPG{i} ''''];
end
Thanks,
Brian

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!