如何阻止 coldfusion 在字符串中添加单引号
how to stop coldfusion from adding single quotes in string
我有一个动态 sql 语句,我想发送到 SQL 服务器。查询的基础在一个名为 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加字段的地方(即''+AddNum),单引号加多了单引号,把下面的发给sql 服务器:
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 服务器中被加倍并失败。
我该如何克服这个问题?
谢谢。
更新 1:我尝试根据 coldfusion 说明('' 和 "")转义引号,但仍然无效。谢谢
您 sql 查询可以通过使用带有 ISNULL() 函数的以下查询来简化:
select ParcelID
,LTRIM(
ISNULL(' ' + AddNum , '')
+ ISNULL(' ' + AddDir , '')
+ ' ' + AddStreet
+ ISNULL(' ' + AddUnitNum, '')
+ ' ' + AddCity + ', ' + AddState + ' '
+ AddZip
+ ISNULL('-'+ AddZip4, '')
) as Address
from PropertyParameters
where AddZip = '#URL.zip#
要转义单引号,您需要使用 PreserveSingleQuotes()
函数。
<cfquery ...>#PreserveSingleQuotes(query)#</cfquery>
我有一个动态 sql 语句,我想发送到 SQL 服务器。查询的基础在一个名为 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加字段的地方(即''+AddNum),单引号加多了单引号,把下面的发给sql 服务器:
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 服务器中被加倍并失败。 我该如何克服这个问题?
谢谢。
更新 1:我尝试根据 coldfusion 说明('' 和 "")转义引号,但仍然无效。谢谢
您 sql 查询可以通过使用带有 ISNULL() 函数的以下查询来简化:
select ParcelID
,LTRIM(
ISNULL(' ' + AddNum , '')
+ ISNULL(' ' + AddDir , '')
+ ' ' + AddStreet
+ ISNULL(' ' + AddUnitNum, '')
+ ' ' + AddCity + ', ' + AddState + ' '
+ AddZip
+ ISNULL('-'+ AddZip4, '')
) as Address
from PropertyParameters
where AddZip = '#URL.zip#
要转义单引号,您需要使用 PreserveSingleQuotes()
函数。
<cfquery ...>#PreserveSingleQuotes(query)#</cfquery>