Проверка пустого или пустого значения для строковой переменной

if((isnull(@value,''))='')

Я хочу знать, работает ли приведенный выше фрагмент кода при проверке, является ли переменная нулевой или пустой.


person Bharath    schedule 18.04.2013    source источник
comment
Это будет зависеть от типа @value.   -  person Joachim Isaksson    schedule 18.04.2013
comment
@Pete: Нет в SQL Server.   -  person Guffa    schedule 18.04.2013
comment
это тип INT. я хочу считать 0 действительным ... хочу исключить только значения NULL и ''   -  person Bharath    schedule 18.04.2013
comment
@Bharath '' не является допустимым значением для INT, поэтому нет необходимости проверять в этом случае, действительно ли тип INT.   -  person Joachim Isaksson    schedule 18.04.2013


Ответы (7)


Да, этот код делает именно это.

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

if (@value is null or @value = '')

Редактировать:

С добавленной информацией о том, что @value является значением int, вместо этого вам понадобятся:

if (@value is null)

Значение int никогда не может содержать значение ''.

person Guffa    schedule 18.04.2013
comment
Также важно знать, что вы должны придерживаться использования is null или not null при работе со сравнениями, которые могут быть или не быть нулевыми. - person Eduardo La Hoz Miranda; 09.06.2015
comment
как насчет if (LEN (@value) is null), когда @value является строкой? - person rivaldid; 28.05.2021
comment
@rivaldid: это то же самое, что и проверка нулевого значения. Длина строки равна нулю только тогда, когда она равна нулю. Если строка имеет нулевую длину, функция len возвращает ноль, а не ноль. - person Guffa; 05.07.2021

Используйте этот способ лучше

if LEN(ISNULL(@Value,''))=0              

Отметьте поле empty или NULL

person AnasChavadi    schedule 12.05.2014
comment
Мне это нравится, но изменил его: if '' = ISNULL (@Value, '') - person ESP; 18.02.2016

Да, вы также можете использовать COALESCE(@value,'')='', основанный на стандарте ANSI SQL:

SELECT CASE WHEN COALESCE(@value,'')='' 
    THEN 'Yes, it is null or empty' ELSE 'No, not null or empty' 
    END AS IsNullOrEmpty

ДЕМО

person Tim Schmelter    schedule 18.04.2013

Да, это работает. Посмотрите пример ниже. Предполагая, что @value не int

WITH CTE 
AS
(
    SELECT NULL AS test
    UNION
    SELECT '' AS test
    UNION
    SELECT '123' AS test
)

SELECT 
    CASE WHEN isnull(test,'')='' THEN 'empty' ELSE test END AS IS_EMPTY 
FROM CTE

Результат :

IS_EMPTY
--------
empty
empty
123
person bvr    schedule 18.04.2013

Попробуй это:

ISNULL(IIF (ColunmValue!='',ColunmValue, 'no units exists') , 'no units exists') AS 'ColunmValueName' 
person milan    schedule 24.09.2014

Ты можешь попробовать

<column_name> is null

в предложении where.

person Fahad Akbar    schedule 21.10.2014
comment
Если вы добавите больше деталей, ваш ответ может быть передан человеку, задающему вопрос. - person Martin Davies; 21.10.2014

Вы можете попробовать это .....

DECLARE @value Varchar(100)=NULL
IF(@value = '' OR @value IS NULL)
  BEGIN
    select 1
  END
ELSE
  BEGIN
    select 0
  END
person Ajay Jamwal    schedule 08.02.2016