2016-12-03 4 views
0
SELECT logic_id 
FROM business_logic_details 
WHERE if(form_completion != 0.00,form_completion,0) = '90' 
    AND if(query_type IS NOT NULL 
     OR query_type !='',query_type,0) LIKE '%domestic%' 
    AND if(client_type IS NOT NULL 
     OR client_type !='',client_type,0) LIKE '%existing%' 
    AND if(tour_package IS NOT NULL 
     OR tour_package !='',tour_package,0) LIKE '%S%' 
    AND if(tour_type IS NOT NULL 
     OR tour_type !='',tour_type,0) LIKE '%2%' 
    AND if(currency IS NOT NULL 
     OR currency !='',currency,0) = 'INR' 
    AND if(country IS NOT NULL 
     OR country !='',country,0) = '105' 
    AND if(adults IS NOT NULL 
     OR adults !='',adults,0) = '1' 
    AND if(duration_of_stay IS NOT NULL 
     OR duration_of_stay !='',duration_of_stay,0) = '5' 
ORDER BY logic_id ASC 
+0

だけコメント...あなたが本当にあなたの 'query_type'と' client_type'列にワイルドカードを使用する必要がありますか? – Bustikiller

+0

はい、これらの列にはカンマ区切りの値があります。これらのカンマ区切り値の値を検索します。 –

答えて

1

そのため使用COALESCE関数検索するためのnullまたは空の場合は、列を無視します:

SELECT logic_id 
FROM business_logic_details 
WHERE COALESCE(form_completion, 90) = 90 
    AND COALESCE(query_type, 'domestic') LIKE '%domestic%' 
     ... 

を私も強く整数としてではなく、文字列として整数を比較することをお勧め:

グッド:0 = 90
悪い:0 = '90'

+0

これは返されません。結果はmy query doとして返されます。 –

+0

私の答えを編集して、必要なものを反映させました。 2番目のパラメータに期待値を入れると、NULLの場合はtrueと評価されます。 –

+0

はい、私は期待される結果を得ました。ありがとう、本当にありがとう。 –

関連する問題