OpenQuery SQL - 我的单引号有什么问题?

OpenQuery SQL - What's wrong with my single quotes?

当我执行这个

SET @Qry =

    'SELECT [LMITNO] INTO ##TABLETEMP' + LTRIM(RTRIM(STR(@@SPID))) + '     
     FROM OPENQUERY(MAA,''SELECT DISTINCT [LMITNO] FROM MAA.ESMEL3.MVXDDTPRD.MILOMA 
     WHERE [LMITNO] LIKE ' + '''' + @ChemicalPreFix + '''' + ''')'

我明白了。

    SELECT [LMITNO] INTO ##TABLETEMP91 FROM 
    OPENQUERY(MAA,'SELECT DISTINCT [LMITNO] 
    FROM MAA.ESMEL3.MVXDDTPRD.MILOMA WHERE [LMITNO] LIKE ''CHE%''')

但我得到的错误是 CHE% 附近的语法不正确。但是语法对我来说看起来没问题。怎么了?

请试试这个:

SET @Qry =

'SELECT [LMITNO] INTO ##TABLETEMP' + LTRIM(RTRIM(STR(@@SPID))) + '     
 FROM OPENQUERY(MAA,''SELECT DISTINCT [LMITNO] FROM MAA.ESMEL3.MVXDDTPRD.MILOMA 
 WHERE [LMITNO] LIKE ' + '''''' + @ChemicalPreFix + '''''' + ''')'

它给出了以下查询:

SELECT [LMITNO] INTO ##TABLETEMP53 FROM 
OPENQUERY(MAA,'SELECT DISTINCT [LMITNO] FROM  MAA.ESMEL3.MVXDDTPRD.MILOMA 
WHERE [LMITNO] LIKE ''CHE%''')

解析成功。 SELECT 查询中的变量需要额外的引号,因为它是动态的 SQL.

除了在 from 语句中包含服务器名称外,您的查询看起来是正确的,它应该读作:

SET @Qry =

    'SELECT [LMITNO] INTO ##TABLETEMP' + LTRIM(RTRIM(STR(@@SPID))) + '     
     FROM OPENQUERY(MAA,''SELECT DISTINCT [LMITNO] FROM ESMEL3.MVXDDTPRD.MILOMA 
     WHERE [LMITNO] LIKE ' + '''' + @ChemicalPreFix + '''' + ''')'