2013-11-02 1 views
0

내 프로젝트에 저장 프로 시저를 사용하려고합니다. 그러나 null 및 비어 있음에 대한 질문이 있습니다.저장 프로 시저가 null이 아니며 비어 있지 않거나 공백이 아닙니다.

ALTER PROCEDURE [dbo].[SP_EMAIL_LIST] 
AS 
BEGIN 
SELECT * 
FROM CUSTOMER 
WHERE 
EMAIL_ADRESS IS NOT NULL  
END 

null 값 또는 빈 값을 가져 오지 않도록 where 절을 사용했으나 여전히 null 값을 얻습니다.

null이 아니고 비어 있지 않은 경우 어떻게 이메일 주소 값을 얻을 수 있습니까?

+0

*** *** ***는 많은 데이터베이스 시스템에서 사용되는 언어이지만 구조적 쿼리 언어 * 일뿐입니다. 데이터베이스 제품이 아닌 ... 많은 것들이 공급 업체별입니다. 그래서 우리는 실제로 무엇이 * * 데이터베이스 시스템 ** (그리고 어떤 버전)을 사용하고 있습니까 (그에 따라 태그를 업데이트하십시오) .... –

+0

사이드 노트 (** SQL Server **의 경우) : ** 사용하지 말아야 ** ** sp_' 접두사를 저장 프로 시저에 대한. Microsoft는 [자체 저장을 위해이 접두어를 예약했습니다 (* 저장 프로 시저 명명 * 참조)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) 및 당신은 미래에 언젠가 이름 충돌의 위험을 감수해야합니다. [저장 프로 시저 성능에 좋지 않습니다.] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). 'sp_'를 피하고 다른 것을 접두어로 사용하는 것이 가장 좋습니다. –

답변

1

이렇게하면됩니다.

SELECT 
    * 
FROM 
    CUSTOMER 
WHERE 
    EMAIL_ADRESS IS NOT NULL AND EMAIL_ADRESS != '' 

NULL과 '의 차이점은 무엇입니까? ''는 단순히 빈 문자열입니다. 일반적으로 NULL은 알 수 없거나 지정되지 않은 값을 나타내는 데 사용됩니다.

+0

또한 shortned 버전 WHERE EMAIL_ADRESS! = ''를 사용하면 NULL 및 빈 문자열을 검사하기에 충분합니다. http://sqlfiddle.com/#!3/5c3e5/1 –

관련 문제