我有一个 ColdFusion 8 应用程序,它使用计划任务每 2 分钟缓存一次大型查询。此查询包含产品数据。此数据用于自动完成逻辑的 AJAX 调用,这是缓存它的主要原因,因为每次运行需要几秒钟。
在应用程序中,有几个页面使用 Query-of-Queries 从此查询结果中进行查询。
在这些查询中,使用 LIKE 条件来过滤结果。但是,查询正在返回不满足条件的记录。为什么会发生这种情况,我该如何预防?
我的缓存查询:
<cfquery name="qProducts" datasource="#APPLICATION.DataSource#">
SELECT
P.SKU
P.DESC,
P.TITLE,
P.KEYWORDS,
X.ATTR1
FROM PRODUCTS P
LEFT JOIN PRODUCTSEXT X
ON P.SKU = X.EXTSKU
WHERE P.ACTIVE = 1
</cfquery>
我的过滤器查询:
<cfquery name="_qFilteredProducts" dbtype="Query">
SELECT
SKU
DESC,
TITLE,
KEYWORDS
FROM qProducts
WHERE 1 = 1
AND (
DESC LIKE '%#searchstring#%'
OR TITLE LIKE '%#searchstring#%'
OR KEYWORDS LIKE '%#searchstring#%'
OR ATTR1 LIKE '%#searchstring#%'
)
</cfquery>
所以,假设我将值“gold”传递给searchstring
.
我看到如下结果:
SKU DESC TITLE KEYWORDS
-------------------------------------------------------------------------------
ABC GOLD KEY GOLD KEY GOLD KEY SHINY
DEF SILVER KEY SILVER KEY SILVER KEY SHINY
我不应该看到第二条记录。