2016-08-11 2 views
0

웹 응용 프로그램에서 값이 비어 있지 않으면 검색 기준을 포함하도록이 작업을 수행 할 수 있습니다.값이 비어 있지 않으면 WHERE 절에 검색 기준을 추가하십시오.

Dim sQuery as string = SELECT * FROM MERCHANT_CATEGORY WHERE 1=1 
If sCatDesc <> "" Then sQuery &= "AND CAT_DESC LIKE '%' + @CAT_DESC + '%' " 

위와 같이하는 방법은 무엇입니까? @CatDesc 빈 문자열 값입니다, 내 기록 CAT_DESC 중 하나가 null의 경우 다음 내가

SELECT * FROM MERCHANT_CATEGORY WHERE 1=1 
AND CAT_DESC LIKE '%' + @CatDesc + '%' 

를 쿼리 사용되며, 결과는 널 값이없는 레코드를 표시합니다.

SELECT * 
FROM MERCHANT_CATEGORY 
WHERE ((@CatDesc IS NULL) OR (CAT_DESC LIKE '%' + @CatDesc + '%')) 

참고가 더 이상 1=1 필요하지 않습니다 :

답변

1

당신은 쿼리의이 양식을 사용할 수 있습니다.

+0

NULL 값이 여전히 표시되지 않는 레코드 – belltric

+0

난 MERCHANT_CATEGORY * FROM 선택 SQL 변경 ((CAT_DESC가 null @ CatDesc = '') 또는 (CAT_DESC LIKE '%'+ @CatDesc + '%')) 는 널 결과도 때 보여 @ CatDesc = '' – belltric

+0

업데이트 된 코드로 질문을 편집하고 원하는 결과물을보다 명확하게 설명하십시오. 나는 네가 뭘하고 있는지 모르겠다. – Blorgbeard

0

시도해 볼 수 있습니다.

select * from table 
where (CAT_DESC like '%'[email protected]+"%" and @CATDESC is not null ) 
or 
(CAT_DESC is null or CAT_DESC="" and @CATDESC is null) 
0
select * 
from table 
where cat_desc like '%' + isnull(@catdesc, '') + '%' 
0

우리는 where 절에 IIF 평가를 추가 할 수 있습니까? 예

를 들어

Select * from table 
    where cat_desc like 
     (iif(@cat_desc is not null,"@cat_desc", "'*' or cat_desc is null") 

이 where 절에 적절한 문자열 값을 발생합니다.

즉. @cat_desc가 null가 아닌 경우, 일치하는 모든 레코드를 선택합니다. @cat_desc가 null의 경우, 「*」와 같은 cat_desc, 또는 cat_desc가 null의 경우.

관련 문제