2014-03-25 3 views
0

을 감안할 경우 :이 var1 = x와 VAR2가 null의 경우 내 검색어 = X와 Y VAR2 =하지만 2 VAR1 경우MySQL의 조건 where 절 값은 null인지

id | f1 | f2 
--------------- 
1 | x | y 
2 | x | null 

내가 행 하나를 선택해야합니다 .

SELECT @var1:='x', @var2:=NULL; 
SELECT * 
FROM datatable 
WHERE f1 = @country 
AND CASE @var2 
    WHEN NOT NULL THEN f2 = @var2 
    ELSE f2 = @var2 
END; 

는 또한 시도 :

내가 지금까지 시도한 것입니다

SELECT @var1:='x', @var2:=NULL; 
SELECT * 
FROM datatable 
WHERE f1 = @var1 
AND f2 = IFNULL(@var2,NULL); 

내가 이것을 달성하기 위해 노조가 필요하십니까 아니면 내가 만들 수있는 작은 비틀기를 놓친 거지 무슨 나는 일을 시도했다?

+0

VAR1 국가의 통화 - 응? – Strawberry

+0

죄송합니다 - 편집하지 않고 복사하십시오 - 게시물을 업데이트하십시오. – MardyDev

답변

1

당신은 안전하게 <=>와 NULL-비교할 수처럼

SELECT 
    * 
FROM 
    datatable 
WHERE 
    f1<=>@var1 
    AND 
-- this will compare with NULL properly: 
    f2<=>@var2 

:

 
mysql> select @var1,@var2; 
+-------+-------+ 
| @var1 | @var2 | 
+-------+-------+ 
| x  | y  | 
+-------+-------+ 
1 row in set (0.00 sec) 

mysql> select * from test where f1<=>@var1 and f2<=>@var2; 
+------+------+------+ 
| id | f1 | f2 | 
+------+------+------+ 
| 1 | x | y | 
+------+------+------+ 
1 row in set (0.00 sec) 
+0

나는 그것을 몰랐다. – Strawberry