Проверьте, является ли параметр пустой или пустой в хранимой процедуре
Я знаю, как проверить, является ли параметр нулевым, но я не уверен, как проверить, является ли его пустым... У меня есть эти параметры, и я хочу проверить, что предыдущие параметры пустые или нулевые, а затем установите их как ниже
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
Я иногда использую 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 = '')
Ответ 6
Другая опция:
IF ISNULL(@PreviousStartDate, '') = '' ...
см. функцию, основанную на этом выражении, в http://weblogs.sqlteam.com/mladenp/archive/2007/06/13/60231.aspx
Ответ 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 ...