Як ми можемо перевірити WHERE
стан SQL Server, чи не стовпець стовпця, а не порожній рядок ( ''
)?
Як ми можемо перевірити WHERE
стан SQL Server, чи не стовпець стовпця, а не порожній рядок ( ''
)?
Відповіді:
Якщо ви хочете "" відповідати лише порожньому рядку
WHERE DATALENGTH(COLUMN) > 0
Якщо ви хочете вважати будь-який рядок, що повністю складається з пробілів, як порожній
WHERE COLUMN <> ''
Обидва вони не повернуть NULL
значення при використанні в WHERE
пункті. Як NULL
буде оцінюватися, як UNKNOWN
для цих, а не TRUE
.
CREATE TABLE T
(
C VARCHAR(10)
);
INSERT INTO T
VALUES ('A'),
(''),
(' '),
(NULL);
SELECT *
FROM T
WHERE C <> ''
Повертає лише один ряд A
. Тобто рядки з NULL
або порожнім рядком або рядком, що складаються повністю з пробілів, виключаються цим запитом.
column
індекс має, ваш запит, ймовірно, не використовуватиме його
WHERE NULLIF(your_column, '') IS NOT NULL
Сьогодні (4,5 роки), щоб полегшити людському читанню, я просто скористався
WHERE your_column <> ''
Хоча існує спокуса зробити явну перевірку явною ...
WHERE your_column <> ''
AND your_column IS NOT NULL
... як демонструє @Martin Smith у прийнятій відповіді, він насправді нічого не додає (і я особисто в даний час відхиляюсь від нуля SQL, тому це все одно не стосується мене!).
Coalesce складе нулі за замовчуванням:
COALESCE (fieldName, '') <> ''
в основному
SELECT *
FROM [TableName]
WHERE column_name!='' AND column_name IS NOT NULL
Просто перевірте: де значення> '' - не нулеве і не порожнє
-- COLUMN CONTAINS A VALUE (ie string not null and not empty) :
-- (note: "<>" gives a different result than ">")
select iif(null > '', 'true', 'false'); -- false (null)
select iif('' > '', 'true', 'false'); -- false (empty string)
select iif(' ' > '', 'true', 'false'); -- false (space)
select iif(' ' > '', 'true', 'false'); -- false (tab)
select iif('
' > '', 'true', 'false'); -- false (newline)
select iif('xxx' > '', 'true', 'false'); -- true
--
--
-- NOTE - test that tab and newline is processed as expected:
select 'x x' -- tab
select 'x
x' -- newline
WHERE COALESCE(column, '') <> ''
?