2017-07-21 4 views
0

2つの異なる列の内容に基づいて結果を返すクエリを作成しています。値1または値2またはその両方を検索するSQLクエリ、どちらも返さない場合

  • COLUMN_1はVALUE1が含まれているかCOLUMN_2は値2が含まれているいずれかの場合 - >マッチングを返すCOLUMN_1はVALUE1が含まれており、COLUMN_2に値が含まれている場合
  • 結果 - どちらの条件が存在する場合>リターンマッチが
  • 結果 - >最初の条件はORケースで解決することができるすべての値

を返します。 2番目の条件はANDの場合です。 条件がないため、3番目の値はすべて返されます。


これは私が書いた質問ですが、希望の結果が返ってくるかどうかは不明です。

SELECT * FROM table 
WHERE 
COLUMN_1 LIKE 'value1%' AND COLUMN_2 LIKE 'value2%' 
ODER BY sno DESC 

答えて

1

私はこのような何かを考えています:

SELECT t.* 
FROM table t 
WHERE (COLUMN_1 LIKE '$value1%' or $value1 is null) AND 
     (COLUMN_2 LIKE '$value2%' or $value2 is null) 
ORDER BY sno DESC; 

実際には、パラメータ値を直接文字列に挿入するのではなく、パラメータを使用します。したがって、これは論理の実例です。

+0

実際には、値ではなくパラメータを使用します。 –

+0

$ value1がnullの場合、WHERE条件でどのように動作しますか? それは のようになります。真であり、COLUMN_2はLIKE 'value2%です。 .... $ value1がnullの場合に何が起きるかを理解しようとしています –

+0

@AbilashAmarasekaran。 。 。これは正確にどのように評価されるのですか?「空の」値が「NULL」として渡されると仮定します。 –

0

TSQL

IF (select count(*) 
     from table 
     where (column_1 like '%value1%' OR column_2 like '%value2%')) > 0) 
    BEGIN 
     select * 
     from table 
     where (column_1 like '%value1%' OR column_2 like '%value2%') 
    END 
    ELSE 
    BEGIN 
     select * 
     from table 
    END 

MYSQL

IF (select count(*) 
     from table 
     where (column_1 like '%value1%' OR column_2 like '%value2%')) > 0) THEN 
    select * 
     from table 
     where (column_1 like '%value1%' OR column_2 like '%value2%') 
    ELSE 
     select * 
     from table 
    END IF; 
関連する問題