現在、フィールドが空白の検索結果を除外する方法を見つけようとしています。簡単な方法は a を使用すること<cfif len(example) neq 0>#example#</cfif>
ですが、これはクエリが不必要に結果を引き出していることを意味します。
<cfquery datasource="#datasource#" name="search">
<cfif URL.for eq "names">
Select artist_id, artist_name
From artists
Where approved = 1
And active = 1
<cfif StructKeyExists("URL.search")>
<cfif URL.find eq "contains">
And name LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
<cfelseif URL.find eq "matches">
And name = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
</cfif>
</cfif>
Order By name Asc
<cfelseif URL.for eq "locations">
<cfif URL.sort eq "town-az" or URL.sort eq "town-za">
Select Distinct town
<cfelseif URL.sort eq "county-az" or URL.sort eq "county-za">
Select Distinct county
<cfelseif URL.sort eq "country-az" or URL.sort eq "country-za">
Select Distinct country
</cfif>
From artists
Where approved = 1
And active = 1
<cfif StructKeyExists("URL.search")>
<cfif URL.find eq "contains">
<cfif URL.sort eq "town-az">
And town LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By town Asc
<cfelseif URL.sort eq "town-za">
And town LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By town Desc
<cfelseif URL.sort eq "county-az">
And county IS NOT NULL
And county LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By county Asc
<cfelseif URL.sort eq "county-za">
And county IS NOT NULL
And county LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By county Desc
<cfelseif URL.sort eq "country-az">
And country LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By country Asc
<cfelseif URL.sort eq "country-za">
And country LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#URL.search#%">
Order By country Desc
</cfif>
<cfelseif URL.find eq "matches">
<cfif URL.sort eq "town-az">
And town = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By town Asc
<cfelseif URL.sort eq "town-za">
And town = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By town Desc
<cfelseif URL.sort eq "county-az">
And county IS NOT NULL
And county = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By county Asc
<cfelseif URL.sort eq "county-za">
And county IS NOT NULL
And county = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By county Desc
<cfelseif URL.sort eq "country-az">
And country = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By country Asc
<cfelseif URL.sort eq "country-za">
And country = <cfqueryparam cfsqltype="cf_sql_varchar" value="#URL.search#">
Order By country Desc
</cfif>
</cfif>
</cfif>
</cfif>
</cfquery>
town
およびフィールドはサインアップ時のcountry
必須フィールドであるため、これらのフィールドは問題ありませんが、郡/州フィールドを必須フィールドにしていないため、ユーザーが郡または州に入らない場合、値は NULL になります。上記のように、len()
メソッドを使用して文字を含む結果のみを表示することもできますが、これはクエリが NULL の結果を引き出していることを意味し、引き出す必要はありません。私はすでに含めましAND county IS NOT NULL
たが、これはまったく違いがないようです。誰かが私を正しい方向に向けることができますか? ありがとう。