WHERE
SQL Server 의 절에서 NULL과 빈 문자열을 동시에 사용하는 방법을 알고 싶습니다 . null 값이나 빈 문자열이있는 레코드를 찾아야합니다. 감사.
WHERE
SQL Server 의 절에서 NULL과 빈 문자열을 동시에 사용하는 방법을 알고 싶습니다 . null 값이나 빈 문자열이있는 레코드를 찾아야합니다. 감사.
답변:
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"가 남아 있기 때문에 비교가 실패하는지는 신경 쓰지 않습니다.
몇 가지 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);
그리고 비파괴적인 것들 ...
SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;
SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;
SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
내 최고의 솔루션 :
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE는 표현식 list ()에서 널이 아닌 첫 번째 expr을 리턴합니다.
fieldValue가 null이거나 비어있는 문자열이면 두 번째 요소를 반환하고 0을 반환합니다.
따라서 0은 0과 같으며이 fieldValue는 null이거나 비어있는 문자열입니다.
예를 들어 파이썬에서 :
def coalesce(fieldValue):
if fieldValue in (null,''):
return 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
당신은 검사 할 수 있습니다 ''
로 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
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()