字符串连接和撇号

时间:2014-11-12 12:13:05

标签: string matlab

我在MATLAB中编写了一个很长的SQL查询。为了让人们更容易阅读它正在做的事情,我试图将查询分解为几行而不是一条长行。

以下是我的代码(名称已更改)。

sql_statement = strcat('select some_feilds from'...
                       ,' databaseOne.tableOne'...
                       ,' join databaseTwo.tableTwo'...
                       ,' on databaseOne.tableOne.f1 = databaseTwo.tableTwo.f2'...
                       ,' where databaseTwo.tableTwo.f2 =','''', x_lbl(1, 1),'');

我遇到的问题是x_lbl(1,1)需要一个'它的任何一方。即f2 ='健康'。

上面的代码给了我'健康'这是相当令人沮丧的,因为当我只是在下面的线上我得到健康'。也许我会失明并失去理智,但却无法以正确的格式查看我的查询?

 lbl = strcat('''', x_lbl(1,1), '''');

更新

 x_lbl(1,1)
 ans = 'Health Care'


 sql_statement = [1x225 char]

这是使用最后一行时的答案,

,' where DVLP_QES.dbo.num_name_mapping.name = ','''', x_lbl(1, 1),'''');

1 个答案:

答案 0 :(得分:2)

如果您需要sql_statement完成select [...] tableTwo.f2 ='Health',则需要在strcat末添加2个单引号:

sql_statement = strcat('select some_feilds from'...
                       ,' databaseOne.tableOne'...
                       ,' join databaseTwo.tableTwo'...
                       ,' on databaseOne.tableOne.f1 = databaseTwo.tableTwo.f2'...
                       ,' where databaseTwo.tableTwo.f2 =','''', x_lbl(1, 1),'''');

我认为x_lbl(1, 1) = Health没有引号,对吗?

修改

使用MATLAB R2014a

>> x_lbl = 'Health';
>> x_lbl
x_lbl =
Health
>> sql_statement = strcat('select some_feilds from'...
                       ,' databaseOne.tableOne'...
                       ,' join databaseTwo.tableTwo'...
                       ,' on databaseOne.tableOne.f1 = databaseTwo.tableTwo.f2'...
                       ,' where databaseTwo.tableTwo.f2 =','''', x_lbl,'''');
>> sql_statement
sql_statement =
select some_feilds from databaseOne.tableOne join databaseTwo.tableTwo on databaseOne.tableOne.f1 = databaseTwo.tableTwo.f2 where databaseTwo.tableTwo.f2 ='Health'