У меня есть запрос, подобный следующему:
ВЫБРАТЬ itemID ИЗ ItemTable, ГДЕ ItemID LIKE '% 123%'
itemTable имеет тип INT.Этот запрос сам по себе прекрасно работает, так как он выбирает «12345» и «0912398» и т. Д. ...
Проблема возникает, когда я пытаюсь использовать
Допустим, var searchValue =123
Если я попытаюсь: <cfqueryparam cfsqltype='cf_sql_integer' value="'%#searchValue#%'" >
Я получаю * Недопустимые данные «123» для CFSQLTYPE CF_SQL_INTEGER. *
Если я попытаюсь: <cfqueryparam cfsqltype='cf_sql_varchar' value="'%#searchValue#%'" >
Я получаю java.lang.Integer не может быть приведен к java.lang.String
Я пытался использовать CAST в моем SQL, а также использовать toString (searchValue) в разных местах, ноЯ всегда получаю одно из сообщений об ошибках выше.Есть ли способ поиска и целочисленной таблицы с использованием CFQUERYPARAM?
РЕДАКТИРОВАТЬ: Ниже фактический код, который я пытаюсь использовать ...
Код CFSCRIPT:
var searchValue=123;
searchFilterQuery(qry=qItemResults, field="itemID", value=searchValue,cfsqltype="cf_sql_varchar");
Функция ХФУ:
<!--- FILTER A QUERY WITH SEARCH TERM --->
<cffunction name="searchFilterQuery" access="public" returntype="query" hint="Filters a query by the given value" output="false">
<!--- ************************************************************* --->
<cfargument name="qry" type="query" required="true" hint="Query to filter">
<cfargument name="field" type="string" required="true" hint="Field to filter on">
<cfargument name="value" type="string" required="true" hint="Value to filter on">
<cfargument name="cfsqltype" type="string" required="false" default="cf_sql_varchar" hint="The cf sql type of the value.">
<!--- ************************************************************* --->
<cfset var qryNew = QueryNew("")>
<cfquery name="qryNew" dbtype="query">
SELECT *
FROM arguments.qry
WHERE #trim(arguments.field)# LIKE <cfqueryparam cfsqltype="#trim(arguments.cfsqltype)#" value="#trim(arguments.value)#">
</cfquery>
<cfreturn qryNew>
</cffunction>