2017-02-17 9 views
0

私は、MATLAB変数があります。SQLクエリを使用して==> horzcat

Name  Size  Bytes  Class  
code  14x1  1036  cell 

を、私は、Oracle

sqlstr = ['select * from sqltable where code in' (code)] 

にクエリに変数を渡すしたいと思いますしかし、私はこのエラーを受け取ります:

??? Error using ==> horzcat 
CAT arguments dimensions are not consistent. 

私を助けてくれますか?

答えて

0

あなたが実際に

code = {'one', 'two', 'three'}; 

array = ['(''', strjoin(code, ''','''), ''')']; 
% ('one','two','three') 

sqlstr = ['select * from sqltable where code in ' array]; 
% select * from sqltable where code in ('one','two','three') 

codeに何が含まれているか注意するようにしてくださいクエリの値のリストの中に文字列のセル配列に変換する必要がありますので、あなたは、文字列でセル配列を連結することはできません。慎重に作成された値がSQLインジェクションにつながる可能性があるため、ユーザーから送信されたものです。

code = {'one''); DROP TABLE users; select * from table where column in (''one'} 

更新

あなたはstrjoinをお持ちでない場合は、代わりに行うことができます。

array = sprintf('''%s'', ', code{:}); 
array = ['(', array(1:end-2), ')']; 
sqlstr = ['select * from sqltable where code in ' array]; 
+0

おかげで残念ながら私はMatlabの7.5.0持っていると 'strjoin' 関数ではありません利用可能な – NG83

+0

@ NG83代替 – Suever

+0

で更新されています。ありがとう! – NG83

関連する問題