我在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),'''');
答案 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'