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 + '''' + ''')'
当我执行这个
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 + '''' + ''')'