web-dev-qa-db-fra.com

Comment utiliser une chaîne vide ou NULL en SQL

Je voudrais savoir comment utiliser NULL et une chaîne vide en même temps dans une clause WHERE dans SQL Server. J'ai besoin de trouver des enregistrements qui ont soit des valeurs NULL ou une chaîne vide. Merci.

110
poshan
Select *
From Table
Where (col is null or col = '')

Ou

Select *
From Table
Where IsNull(col, '') = ''
200
codingbadger

Vous pouvez simplement faire ceci:

SELECT *
FROM   yourTable
WHERE  yourColumn IS NULL OR yourColumn = ''
26
Praveen Nambiar

Si vous en avez besoin dans SELECT la section peut utiliser comme ceci.

    SELECT  ct.ID, 
            ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
    FROM    [dbo].[CustomerTable] ct

vous pouvez remplacer la null par votre valeur de substitution.

20
Sameera R.
SELECT *
FROM   TableName
WHERE  columnNAme IS NULL OR 
       LTRIM(RTRIM(columnName)) = ''
15
John Woo

Pour rechercher des lignes où col est NULL, chaîne vide ou espace (espaces, tabulations):

SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''

Pour rechercher des lignes où col est NOT NULL, chaîne vide ou espace (espaces, tabulations):

SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
7
Scott Sterling

Quelques sargable méthodes ...

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);

Et quelques uns non sargables ...

SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;

SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;

SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
6
Martin Smith

ma meilleure solution:

 WHERE  
 COALESCE(char_length(fieldValue), 0) = 0

COALESCE renvoie la première expression non nulle dans la liste d'expressions ().

si la variable fieldValue est null ou une chaîne vide, nous renverrons le deuxième élément, puis 0.

si 0 est égal à 0 alors ce champ Valeur est une chaîne nulle ou vide.

dans python par exemple:

def coalesce(fieldValue):
    if fieldValue in (null,''):
        return 0

bonne chance

3
Anouar Mokhtari

Ceci est moche MSSQL:

CASE WHEN LTRIM(RTRIM(ISNULL([Address1], ''))) <> '' THEN [Address2] ELSE '' END
3
ADM-IT

par cette fonction:

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

et utiliser ceci:

dbo.isnull (valeur, 0)

1
Mohsen.Sharify
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()
1
Vinicius.Beloni

Dans sproc, vous pouvez utiliser la condition suivante:

DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER
IF(COALESCE(@USER_ID,'')='')
PRINT 'HUSSAM'

youe check null With IS NULL et chaîne Empty With LEN (RTRIM (LTRIM (Column))) = 0 in

SELECT *
FROM AppInfra.Person
WHERE   LEN(RTRIM(LTRIM(NationalCode))) = 0 OR  NationalCode IS NULL
1
Alireza Shabani

Vous pouvez utiliser la fonction isnull pour obtenir les valeurs null et les valeurs vides d'un champ de texte:

SELECT * FROM myTable
WHERE isnull(my_nullable_text_field,'') = ''
1
Alberto De Caro
--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

Vous pouvez examiner '' comme NULL en le convertissant en NULL à l'aide de NULLIF

--here you set '' to null
UPDATE #T SET NAME = NULLIF(NAME,'')
SELECT * FROM #T 
 1  JOHN
 2  NULL
 3  NULL

ou vous pouvez examiner NULL comme '' en utilisant 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
1
BTE
SELECT *
FROM   Table
WHERE  column like '' or column IS NULL OR LEN(column) = 0
1
Charaf JRA