복붙노트

[SQL] 매개 변수가 null 또는 비어있는 저장 프로 시저에 있는지 확인

SQL

매개 변수가 null 또는 비어있는 저장 프로 시저에 있는지 확인

나는 매개 변수가 null하지만 난 ... 나는 이러한 매개 변수를 비어있는 그 여부를 확인하는 방법을 잘 모르겠습니다 여부를 확인하는 방법을 알고 난 이전의 매개 변수를 확인하려면 비어 있거나 널 (null) 다음으로 설정할 수 있습니다 아래와 같이

ALTER PROCEDURE [dbo].[GetSummary]
    @PreviousStartDate NVARCHAR(50) ,
    @PreviousEndDate NVARCHAR(50) ,
    @CurrentStartDate NVARCHAR(50) ,
    @CurrentEndDate NVARCHAR(50)
AS
  BEGIN
    IF(@PreviousStartDate IS NULL OR EMPTY)
        SET @PreviousStartdate = '01/01/2010'  for example..

나는 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.가끔과 같이 NULLIF를 사용하여 ...

    가끔과 같이 NULLIF를 사용하여 ...

    IF NULLIF(@PreviousStartDate, '') IS NULL
    

    이 @Oded 및 @bluefeet, 단지 문체의 선호에 의해 제안 된 방법보다 더 나은 이유는 아마도 없습니다.

    @ danihp의 방법은 정말 멋지다하지만 난 생각이 null 또는 비어있을 때 내 피곤 된 뇌는 유착에 갈 것입니다 :-)

  2. ==============================

    2.여기에 일반적인 패턴은 다음과 같습니다

    여기에 일반적인 패턴은 다음과 같습니다

    IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')
    

    'SQL 서버에서 빈 문자열입니다.

  3. ==============================

    3.내가 사용 뭉쳤다 :

    내가 사용 뭉쳤다 :

    IF ( COALESCE( @PreviousStartDate, '' ) = '' ) ...
    
  4. ==============================

    4.당신이 사용할 수있는:

    당신이 사용할 수있는:

    IF(@PreviousStartDate IS NULL OR @PreviousStartDate = '')
    
  5. ==============================

    5.무엇 COALESCE 및 NULLIF를 조합 어떻습니까?

    무엇 COALESCE 및 NULLIF를 조합 어떻습니까?

    SET @PreviousStartDate = coalesce(nullif(@PreviousStartDate, ''), '01/01/2010')
    
  6. ==============================

    6.또 다른 옵션 :

    또 다른 옵션 :

    IF ISNULL(@PreviousStartDate, '') = '' ...
    

    http://weblogs.sqlteam.com/mladenp/archive/2007/06/13/60231.aspx에서이 식에 기초하여 함수를 참조

  7. ==============================

    7.변수가 null 또는 빈 상태 (empty)의 사용이 있는지 확인하려면 :

    변수가 null 또는 빈 상태 (empty)의 사용이 있는지 확인하려면 :

    IF LEN(ISNULL(@var, '')) = 0
    
  8. ==============================

    8.당신이 매개 변수를 사용하려면 옵션 그래서 그것을 사용합니다.

    당신이 매개 변수를 사용하려면 옵션 그래서 그것을 사용합니다.

    CREATE PROCEDURE uspGetAddress @City nvarchar(30) = NULL, @AddressLine1 nvarchar(60) = NULL
        AS
        SELECT *
        FROM AdventureWorks.Person.Address
        WHERE City = ISNULL(@City,City)
        AND AddressLine1 LIKE '%' + ISNULL(@AddressLine1 ,AddressLine1) + '%'
        GO
    
  9. ==============================

    9.내가 너무 잘못된 날짜를 확인하는 것이 좋습니다 :

    내가 너무 잘못된 날짜를 확인하는 것이 좋습니다 :

    set @PreviousStartDate=case ISDATE(@PreviousStartDate) 
        when 1 then @PreviousStartDate 
            else '1/1/2010'
        end
    
  10. ==============================

    10.당신이 "널, 빈 또는 공백"체크를 원하는 경우에, 당신은이 같은 LTRIM 및 RTRIM 불필요한 문자열 조작을 방지 할 수 있습니다.

    당신이 "널, 빈 또는 공백"체크를 원하는 경우에, 당신은이 같은 LTRIM 및 RTRIM 불필요한 문자열 조작을 방지 할 수 있습니다.

    IF COALESCE(PATINDEX('%[^ ]%', @parameter), 0) > 0
        RAISERROR ...
    
  11. ==============================

    11.이 시도 할 수 있습니다 : -

    이 시도 할 수 있습니다 : -

    IF NULLIF(ISNULL(@PreviousStartDate,''),'') IS NULL
    SET @PreviousStartdate = '01/01/2010'
    
  12. from https://stackoverflow.com/questions/9855331/check-if-a-parameter-is-null-or-empty-in-a-stored-procedure by cc-by-sa and MIT license