Matlab中的SQL查询:正确的语法

时间:2015-01-07 10:17:15

标签: sql-server matlab extraction

我有以下情况:

目标: 我想从数据仓库(Microsoft SQL Server Management Studio 2008)获取数据,并在Matlab(R2012b)中继续这些数据。我正在使用Windows机器。

问题: 我写了一些代码行,从数据仓库中提取数据。但是,不知怎的,它不起作用。 但是,以下代码正常工作:

% Make connection to server.  Note that the password has been omitted.
% Using ODBC driver.
conn = database('server1','','password');
% Read data from database.
e=exec(conn, strcat('SELECT ''test'',[PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE]     [CUR_CD],SUM([V1]) [V1],SUM([V2]) [V2],CASE WHEN SUM([V2])>0 THEN  SUM([V1])/SUM([V2]) ELSE 0 END ZNET_CHANGE FROM [server2].[CatRPT].[dat].[MASTERTABLE] WHERE DETAILED=1 AND (    [RPT_ID1_LV1_SHORT_NM]=''test'' OR [RPT_ID1_LV2_SHORT_NM]=''test'' OR [RPT_ID1_LV3_SHORT_NM]=''test'' OR [RPT_ID1_LV4_SHORT_NM]=''test'') AND CNTRY_CD=''string1'' AND PRL_CD=''string2'' GROUP BY [PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE],[CUR_CD]')); 
e = fetch(e);
close(e);
% Assign data to output variable.
netpercresta = e.Data;
% Close database connection.
close(conn);

现在,我想实现一个动态变量。这意味着我想替换字符串' test'在上面的代码中有一个变量。我的尝试如下:

variable='test'
% Make connection to server.  Note that the password has been omitted.
% Using ODBC driver.
conn = database('server1','','password');
% Read data from database.
e=exec(conn, strcat('SELECT ''' variable ''',[PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE]     [CUR_CD],SUM([V1]) [V1],SUM([V2]) [V2],CASE WHEN SUM([V2])>0 THEN  SUM([V1])/SUM([V2]) ELSE 0 END ZNET_CHANGE FROM [server2].[CatRPT].[dat].[MASTERTABLE] WHERE DETAILED=1 AND (    [RPT_ID1_LV1_SHORT_NM]=''' variable ''' OR [RPT_ID1_LV2_SHORT_NM]=''' variable ''' OR [RPT_ID1_LV3_SHORT_NM]=''' variable ''' OR [RPT_ID1_LV4_SHORT_NM]=''' variable ''') AND CNTRY_CD=''string1'' AND PRL_CD=''string2'' GROUP BY [PRL_REG_NM],[CNTRY_CD],[CRESTA],[POSTALCODE],[CUR_CD]')); 
e = fetch(e);
close(e);
% Assign data to output variable.
netpercresta = e.Data;
% Close database connection.
close(conn);

第二种方法(包括变量)不起作用。 Matlab产生以下错误消息:

  

"错误:意外的MATLAB表达式。"。

意外的表达是 - 根据Matlab - 第一个"变量"在字符串中。

有谁知道如何解决这个问题?

0 个答案:

没有答案