15 ответов:
Select * From Table Where (col is null or col = '')или
Select * From Table Where IsNull(col, '') = ''
Если вам это нужно в выберите раздел можно использовать так.
SELECT ct.ID, ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate] FROM [dbo].[CustomerTable] ctможно заменить на
nullС вашим подстановки.
чтобы найти строки, где col
NULL, пустая строка или пробелы (пробелы, вкладки):SELECT * FROM table WHERE ISNULL(LTRIM(RTRIM(col)),'')=''чтобы найти строки, где col
NOT NULL, пустая строка или пробелы (пробелы, вкладки):SELECT * FROM table WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
некоторые sargable методы...
SELECT * FROM #T WHERE SomeCol = '' OR SomeCol IS NULL; SELECT * FROM #T WHERE SomeCol = '' UNION ALL SELECT * FROM #T WHERE SomeCol IS NULL; SELECT * FROM #T WHERE EXISTS ((SELECT NULL UNION SELECT '') INTERSECT SELECT SomeCol);и некоторые non-sargable из них...
SELECT * FROM #T WHERE IIF(SomeCol <> '',0,1) = 1; SELECT * FROM #T WHERE NULLIF(SomeCol,'') IS NULL; SELECT * FROM #T WHERE ISNULL(SomeCol,'') = '';
это некрасиво MSSQL:
CASE WHEN LTRIM(RTRIM(ISNULL([Address1], ''))) <> '' THEN [Address2] ELSE '' END
вы могли бы использовать
isnull
--setup IF OBJECT_ID('tempdb..#T') IS NOT NULL DROP TABLE #T; CREATE TABLE #T(ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, NAME VARCHAR(10)) INSERT INTO #T (Name) VALUES('JOHN'),(''),(NULL); SELECT * FROM #T 1 JOHN 2 -- is empty string 3 NULLвы можете ознакомиться
''какNULLпутем преобразования его вNULLиспользуяNULLIF--here you set '' to null UPDATE #T SET NAME = NULLIF(NAME,'') SELECT * FROM #T 1 JOHN 2 NULL 3 NULLили вы можете изучить
NULLкак''используяSELECT ISNULL(NULL,'')-- here you set NULL to '' UPDATE #T SET NAME = ISNULL(NULL,'') WHERE NAME IS NULL SELECT * FROM #T 1 JOHN 2 -- is empty string 3 -- is empty string --clean up DROP TABLE #T
лучшее мое решение :
WHERE COALESCE(char_length(fieldValue), 0) = 0функции coalesce возвращает первое не-null выражение в списке выражения().
если значение поля равно null или пустой строке, то: мы вернем второго элемента 0.
поэтому 0 равно 0, тогда это значение поля равно null или пустой строке.
в python для примера:
def coalesce(fieldValue): if fieldValue in (null,''): return 0удачи
в sproc можно использовать следующее условие:
DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER IF(COALESCE(@USER_ID,'')='') PRINT 'HUSSAM'
функции:
ALTER FUNCTION [dbo].[isnull](@input nvarchar(50),@ret int = 0) RETURNS int AS BEGIN return (case when @input='' then @ret when @input is null then @ret else @input end) ENDи так:
dbo.isnull (value,0)
SELECT * FROM DBO.AGENDA WHERE --IF @DT_START IS NULL OR EMPTY ( ISNULL( @DT_START,'' ) = '' AND DT_START IS NOT NULL ) -- GET ALL DATE OR --ELSE ( DT_START >= @DT_START ) --FILTER -- MORE FILTER SELECT * FROM DBO.AGENDA WHERE ( ( ISNULL( @DT_START,'' ) = '' AND DT_START IS NOT NULL ) OR ( DT_START >= @DT_START ) ) AND DT_END < GETDATE()
начала проверить null с null и пустые строки с Леном(функция rtrim(функция ltrim(столбец))) = 0 в
SELECT * FROM AppInfra.Person WHERE LEN(RTRIM(LTRIM(NationalCode))) = 0 OR NationalCode IS NULL
Comments