8 ответов:
если вы только хотите, чтобы соответствовать "" как пустую строку
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или пустая строка или строка, состоящая полностью из пробелов являются все исключено этим запросом.
WHERE NULLIF(your_column, '') IS NOT NULL
В настоящее время (4,5 года), чтобы человеку было легче читать, я бы просто использовал
WHERE your_column <> ''пока есть соблазн сделать нулевую проверку явной...
WHERE your_column <> '' AND your_column IS NOT NULL...Как показывает @Martin Smith в принятом ответе, он действительно ничего не добавляет (и я лично полностью избегаю SQL-нулей в настоящее время, поэтому он все равно не будет применяться ко мне!).
индекс дружественный способ сделать это:
where (field is not null and field <> '')Если строк не так много или это поле не индексируется, вы можете использовать:
where isnull(field,'') <> ''
это условие будет выполнять проверку" Null, пустой или пробел", без ненужных манипуляций со строкой
LTRIMиRTRIM.SELECT * FROM [Table] WHERE COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
вы можете использовать любой из них для проверки null, пробелов и пустых строк.
WHERE COLUMN <> '' WHERE LEN(COLUMN) > 0 WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL
просто проверьте: где значение > " -- not null and not empty
-- 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
Comments