Here’s an example how to break up a search phrase which is either separated by space or comma into multiple single search terms so that we can perform LIKE in multiple database fields for searching.
searchWhere is a search field on the front end.
SELECT * FROM 0=0 <!--- searchWhere starts ---> <cfif Len(searchWhere)> <cfif FindOneOf(",",searchWhere) GT 0> <!--- separated by comma ---> <cfset loopcount = 1> <cfloop list="#searchWhere#" index="iTerm" delimiters=","> <cfset iTerm = trim(iTerm)> <cfif loopcount EQ 1> AND ( <cfelse> AND </cfif> ( c.strAddress1 LIKE <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR c.strAddress2 LIKE <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR c.strCity LIKE <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR hState.strStateName like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR c.strPostal LIKE <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> ) <cfset loopcount = loopcount +1> </cfloop> ) <!--- separated by comma. ---> <cfelseif FindOneOf(" ",searchWhere) GT 0> <!--- separated by space ---> <cfset loopcount = 1> <cfloop list="#searchWhere#" index="iTerm" delimiters=" "> <cfset iTerm = trim(iTerm)> <cfif loopcount EQ 1> AND ( <cfelse> AND </cfif> ( c.strAddress1 like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR c.strAddress2 like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR c.strCity like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR hState.strStateName like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> OR c.strPostal like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#iTerm#%"> ) <cfset loopcount = loopcount +1> </cfloop> ) <!--- separated by space. ---> <cfelse> <!--- Single value ---> <cfset searchterm = searchWhere> AND ( c.strAddress1 like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#searchTerm#%"> OR c.strAddress2 like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#searchTerm#%"> OR c.strCity like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#searchTerm#%"> OR hState.strStateName like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#searchTerm#%"> OR c.strPostal like <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="%#searchTerm#%"> ) <!--- Single value. ---> </cfif> </cfif> <!--- searchWhere ends --->
The post coldfusion, sql: Divide a Search Phrase into Multiple Searchable Terms in a Query appeared first on Living in IT.