web-dev-qa-db-ja.com

SQLでNULLまたは空の文字列を使用する方法

SQL ServerのWHERE句でNULLと空の文字列を同時に使用する方法を知りたいです。 null値または空の文字列を持つレコードを見つける必要があります。ありがとう。

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

または

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

これを簡単に実行できます。

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

SELECTセクションで必要な場合は、このように使用できます。

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

nullをあなたの代用値に置き換えることができます。

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

ColがNULL、空の文字列、または空白(スペース、タブ)である行を見つけるには、次のようにします。

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

ColがNOT NULL、空の文字列、または空白(スペース、タブ)である行を見つけるには、次のようにします。

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

いくつかの 検索可能な メソッド...

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,'') = '';
6
Martin Smith

これは醜いMSSQLです。

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

この機能によって:

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)

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

Sprocでは、以下の条件を使うことができます。

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

IS NULLおよび文字列LEN(RTRIM(LTRIM(Column)))= 0でNULLをチェックします。

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

テキストフィールドのisnullと空の値の両方を取得するには、 null 関数を使用できます。

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

NULLを使用してNULLに変換することで、''NULLIFとして検査できます。

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

SELECT ISNULL(NULL,'')を使って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

私の最善の解決策:

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

COALESCEは式list()内の最初のNULLでないexprを返します。

fieldValueがnullまたは空の文字列の場合:2番目の要素、次に0を返します。

そのため、0は0に等しく、このfieldValueはnullまたは空の文字列です。

例えばpythonでは:

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

がんばろう

1
Anouar Mokhtari
SELECT *
FROM   Table
WHERE  column like '' or column IS NULL OR LEN(column) = 0
1
Charaf JRA