如何阻止coldfusion在string中添加单引号

时间:2015-08-30 18:32:13

标签: sql-server coldfusion

我有一个动态的sql语句,我想要发送到SQL Server。查询的基础位于名为query的变量中:

<cfset query ="select 
            ParcelID,
            LTRIM(IIF(AddNum IS NOT NULL, ' ' + AddNum, '') + IIF(AddDir IS NOT NULL, ' ' + AddDir, '')  + ' ' + AddStreet + IIF(AddUnitNum IS NOT NULL, ' ' + AddUnitNum, '') + ' ' + AddCity + ', ' + AddState + ' ' + AddZip + IIF(AddZip4 IS NOT NULL, '-'+ AddZip4, '')) as Address
        from PropertyParameters
        where AddZip = '#URL.zip#'">

我的问题是你看到quote-space-quote plus字段(即&#39;&#39; + AddNum)的区域,单引号添加更多单引号,并将以下内容发送到sql server:< / p>

select ParcelID,
LTRIM(IIF(AddNum IS NOT NULL, '' '' + AddNum, '''') + IIF(AddDir IS NOT NULL, '' '' + AddDir, '''')  + '' '' + AddStreet + IIF(AddUnitNum IS NOT NULL, '' '' + AddUnitNum, '') + '' '' + AddCity + '', '' + AddState + '' '' + AddZip + IIF(AddZip4 IS NOT NULL, ''-''+ AddZip4, '')) as Address
from PropertyParameters
where AddZip = 20001 and Score > 70;

正如您所看到的,引号加倍并在sql server中失败。 我该如何克服这个问题?

感谢。

更新1:我尝试根据coldfusion说明(&#39;&#39;&#34;&#34;&#34;)尝试转义报价,但仍然无法正常工作。感谢

1 个答案:

答案 0 :(得分:0)

使用以下带有ISNULL()函数的查询可以简化您的SQL查询:

CG_CONTEXT_SHOW_BACKTRACE

要转义单引号,您需要使用PreserveSingleQuotes()函数。

YES