2013-03-23 4 views
0

한다고 가정 나는 내가 PHP와 함께 그것을 설정하는 방법, 나는 가능성이 내가 검색 선택을 제공하고 있기 때문에 X와 Y가 비어있을 수 있습니다 알고 있습니다빈 값

SELECT A,B FROM T1 WHERE A=X and B=Y; 

A 및/또는 B를 사용합니다. 따라서 A 만 주어 졌다고 가정 해 봅시다. A = X 인 모든 튜플을 반환하려면 Y는 무엇이 필요합니까? SQL에 '공백'기능이 있습니까?

+0

당신은 의미합니까 'NULL' IS (처럼'A는 NULL 또는 A = X')? –

답변

1

다음은 A 또는 B 중 하나가 NULL 인 (채워지지 않은) 모든 행을 반환하거나 또는 "A = $ a": " A와 B 모두 귀하가 정의한 것과 동일합니다.

SELECT A, B FROM T1 WHERE (A IS NULL or A=X) and (B IS NULL or B=Y); 

다른 것을 찾으려면 질문을 명확히하십시오.

+0

내 Y가 변수 $ v이고 이것이 비어 있다는 것을 알고 있고 내가 할 수 있다고 확신한다면 $ v = "" 이것은 SQL에 대해 null로 간주됩니까? 아니면 그렇게해야합니까? 그냥 그대로 전달할 수 있습니까? – rex

+1

@rex ** '**'을 **과 비교할 수는 없습니다. 'NULL'은 아무 것도 아닙니다. SQL에서는'WHERE IS NULL' 또는'WHERE IS NOT NULL'이라고 쓰십시오. 이것이 도움이되는지 확인하십시오 : http://www.tutorialspoint.com/mysql/mysql-null-values.htm –

+0

감사합니다. SQL이 NULL 인 PHP 변수를 어떻게 처리했는지 확실하지 않았습니다. – rex

1

을 감안할 때이 검색 PARAMATERS의 X 및/또는 Y, 당신도 매개 변수에 의해 검색 할 수 IS NULL으로 OR을 사용할 수 있습니다 : 당신이 알고있는 경우

SELECT A,B 
FROM T1 
WHERE (X IS NULL OR A=X) AND 
    (Y IS NULL OR B=Y) 
1

당신은 종류의 무언가를 사용할 수있는 A 또는 B의 데이터 그 열의도 이제까지있을 것 NULL 값을 수 없을 것 또는 값을 알고 있다면 당신은 경우 함수에서 NULL 값을 수정할 수 있습니다

MySQL은 :

SELECT A,B FROM table where A=IF('X' <> '', X, NULL) OR B=IF('Y' <> '', Y, NULL) 

SQL 서버 :

$ querystr = "A, B SELECT : A가 존재하는 경우는 PHP를 통해 쿼리를 전달하는 경우

SELECT A,B FROM table where A=IIF('x' <> '', X, NULL) OR B=IIF('Y' <> '', Y, NULL) 

귀하의 다른 대안은 즉, B의 AND/OR 절을 포함하지 않는 것입니다 FROM table WHERE "($ a! =" "?

1

A IS NULL이 맞는지 확인하고 싶습니다. 테이블의 열 A는 선택 사항입니다

SELECT A, B FROM T1 WHERE (A=X OR A IS NULL) AND (B=Y OR B IS NULL); 

경우 새 레코드를 삽입하거나이 컬럼에 값을 추가하지 않고 기존 레코드를 업데이트 할 수 있습니다처럼

그래서 전체 SQL 쿼리를 보일 것이다. 즉, 필드가 NULL 값으로 저장됩니다. NULL은 알 수 없거나 적용 할 수없는 값의 자리 표시 자로 사용됩니다.

상세 정보 : MySQL NULL values

1

당신은 의미합니까,

SELECT A,B 
    FROM T1 
    WHERE (A=X or X is null) 
    and (B=Y or Y is null) 
    and not(A is null and B is null);