Gostaria de saber como usar NULL e uma string vazia ao mesmo tempo em uma WHERE
cláusula no SQL Server. Eu preciso encontrar registros que tenham valores nulos ou uma seqüência de caracteres vazia. Obrigado.
Gostaria de saber como usar NULL e uma string vazia ao mesmo tempo em uma WHERE
cláusula no SQL Server. Eu preciso encontrar registros que tenham valores nulos ou uma seqüência de caracteres vazia. Obrigado.
Respostas:
Select *
From Table
Where (col is null or col = '')
Ou
Select *
From Table
Where IsNull(col, '') = ''
Você pode simplesmente fazer isso:
SELECT *
FROM yourTable
WHERE yourColumn IS NULL OR yourColumn = ''
Se você precisar na seção SELECT , pode usar assim.
SELECT ct.ID,
ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM [dbo].[CustomerTable] ct
você pode substituir null
por seu valor de substituição.
SELECT *
FROM TableName
WHERE columnNAme IS NULL OR
LTRIM(RTRIM(columnName)) = ''
ltrim
e rtrim
se o objetivo é apenas comparar com uma string vazia. MOTIVO: se houver APENAS espaços em branco, um único recorte removerá tudo. Por exemplo, você não se importa se a comparação falha porque o que resta é "abc" ou "abc".
Para encontrar linhas em que col está NULL
, sequência vazia ou espaço em branco (espaços, guias):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
Para encontrar linhas em que col está NOT NULL
, sequência vazia ou espaço em branco (espaços, guias):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
Alguns métodos sargáveis ...
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);
E alguns não sargáveis ...
SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;
SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;
SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
minha melhor solução:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE retorna a primeira expr não nula na lista de expressões ().
se o fieldValue for nulo ou vazio, então: retornaremos o segundo elemento e, em seguida, 0.
então 0 é igual a 0, então este fieldValue é uma sequência nula ou vazia.
em python, por exemplo:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
boa sorte
youe verifica null With IS NULL e string Empty With LEN (RTRIM (LTRIM (coluna))) = 0 em
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
Você poderia usar isnull
função para obter null
valores vazios e de um campo de texto:
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
Você pode examinar ''
como NULL
convertendo-o para NULL
usarNULLIF
--here you set '' to null
UPDATE #T SET NAME = NULLIF(NAME,'')
SELECT * FROM #T
1 JOHN
2 NULL
3 NULL
ou você pode examinar NULL
como ''
usandoSELECT 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
No sproc, você pode usar a seguinte condição:
DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER
IF(COALESCE(@USER_ID,'')='')
PRINT 'HUSSAM'
por esta função:
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
e use isto:
dbo.isnull (valor, 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()