Я хотел бы знать, как использовать NULL и пустую строку одновременно в WHEREпредложении в SQL Server. Мне нужно найти записи, которые имеют либо нулевые значения, либо пустую строку. Спасибо.
Я хотел бы знать, как использовать NULL и пустую строку одновременно в WHEREпредложении в SQL Server. Мне нужно найти записи, которые имеют либо нулевые значения, либо пустую строку. Спасибо.
Ответы:
Select *
From Table
Where (col is null or col = '')
Или
Select *
From Table
Where IsNull(col, '') = ''
Вы можете просто сделать это:
SELECT *
FROM yourTable
WHERE yourColumn IS NULL OR yourColumn = ''
Если вам это нужно в разделе SELECT, можно использовать вот так.
SELECT ct.ID,
ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM [dbo].[CustomerTable] ct
вы можете заменить на nullсвое замещающее значение.
SELECT *
FROM TableName
WHERE columnNAme IS NULL OR
LTRIM(RTRIM(columnName)) = ''
ltrimи rtrimесли цель - просто сравнить с пустой строкой. ПРИЧИНА: если есть ТОЛЬКО пробелы, одна обрезка удалит их все. Например, вам все равно, будет ли сравнение неудачным, потому что остается «abc» или «abc».
Чтобы найти строки, где col NULL, пустая строка или пробел (пробелы, табуляции):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
Чтобы найти строки, где col NOT NULL, пустая строка или пробел (пробелы, табуляции):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
Некоторые разумные методы ...
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);
И некоторые несрочные ...
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
мое лучшее решение:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE возвращает первое ненулевое выражение в списке выражений ().
если fieldValue является нулем или пустой строкой, тогда: мы вернем второй элемент, затем 0.
поэтому 0 равен 0, тогда это fieldValue является пустой или пустой строкой.
в Python, например:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
удачи
youe check null With IS NULL и string Empty With LEN (RTRIM (LTRIM (Column))) = 0 in
SELECT *
FROM AppInfra.Person
WHERE LEN(RTRIM(LTRIM(NationalCode))) = 0 OR NationalCode IS NULL
select
isnull(column,'') column, *
from Table
Where column = ''
SELECT *
FROM Table
WHERE column like '' or column IS NULL OR LEN(column) = 0
Вы можете использовать isnullфункцию для получения как nullпустых значений текстового поля:
SELECT * FROM myTable
WHERE isnull(my_nullable_text_field,'') = ''
--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
Вы можете проверить ''as NULL, преобразовав его в NULLusingNULLIF
--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
В 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 (значение 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()