Подтвердить что ты не робот

Проверьте, является ли параметр пустой или пустой в хранимой процедуре

Я знаю, как проверить, является ли параметр нулевым, но я не уверен, как проверить, является ли его пустым... У меня есть эти параметры, и я хочу проверить, что предыдущие параметры пустые или нулевые, а затем установите их как ниже

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..

Буду признателен за помощь.

4b9b3361

Ответ 1

Я иногда использую NULLIF так...

IF NULLIF(@PreviousStartDate, '') IS NULL

Вероятно, нет причин для этого лучше, чем предложенный @Oded и @bluefeet, просто стилистические предпочтения.

@danihp метод действительно крут, но мой усталый старый мозг не пошел в COALESCE, когда я думаю, что это пусто или пусто: -)

Ответ 2

Вот общий шаблон:

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

'' - пустая строка в SQL Server.

Ответ 3

Я использую coalesce:

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

Ответ 4

Как насчет объединения coalesce и nullif?

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

Ответ 5

вы можете использовать:

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

Ответ 7

Если вы хотите использовать параметр Необязательно, используйте его.

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

Ответ 8

Чтобы проверить, является ли переменная пустой или пустой, используйте это:

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

Ответ 9

Я рекомендую также проверять недействительные даты:

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

Ответ 10

IF NULLIF (ISNULL (@PreviousStartDate, ''), '') IS NULL   SET @PreviousStartdate = '01/01/2010 '

Ответ 11

Если вы хотите проверить "Нулевое, пустое или белое пространство", вы можете избежать ненужных манипуляций с строками с помощью LTRIM и RTRIM, как это.

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