В настоящее время я пытаюсь найти способ пропустить любые результаты поиска, где поле пусто. Простым методом было бы использовать <cfif len(example) neq 0>#example#</cfif>
, но это значит, что мой запрос выводит результаты без необходимости.Опуская пустые/нулевые записи из запроса? (Coldfusion)
<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
, но это не имеет никакого значения. Кто-нибудь сможет указать мне в правильном направлении? Благодарю.
Вы можете показать образец результата? Являются ли поля введенными как NULL или пустые значения в базу данных? Если они NULL, то 'IS NOT NULL' является правильным синтаксисом. –
Вы уверены, что они ноль, а не просто дефолт по умолчанию? –
Введено как NULL, у меня оно есть, если поле остается пустым, когда они подписываются, оно не вводит никаких данных вообще, и также установило его, когда оно обновляет его, если поле остается пустым, оно просто обновляет значение до NULL. – Banny