Quantcast
Channel: Living in IT » SQL
Viewing all articles
Browse latest Browse all 2

coldfusion, sql: Divide a Search Phrase into Multiple Searchable Terms in a Query

$
0
0

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.


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images