Saya ingin tahu cara menggunakan NULL dan string kosong pada saat yang sama dalam WHERE
klausa di SQL Server. Saya perlu menemukan catatan yang memiliki nilai nol atau string kosong. Terima kasih.
Saya ingin tahu cara menggunakan NULL dan string kosong pada saat yang sama dalam WHERE
klausa di SQL Server. Saya perlu menemukan catatan yang memiliki nilai nol atau string kosong. Terima kasih.
Jawaban:
Select *
From Table
Where (col is null or col = '')
Atau
Select *
From Table
Where IsNull(col, '') = ''
Anda bisa melakukan ini:
SELECT *
FROM yourTable
WHERE yourColumn IS NULL OR yourColumn = ''
Jika Anda membutuhkannya di bagian SELECT dapat menggunakan seperti ini.
SELECT ct.ID,
ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM [dbo].[CustomerTable] ct
Anda dapat mengganti null
dengan nilai substitusi Anda.
SELECT *
FROM TableName
WHERE columnNAme IS NULL OR
LTRIM(RTRIM(columnName)) = ''
ltrim
dan rtrim
jika tujuannya hanya untuk membandingkan dengan string kosong. ALASAN: jika ada HANYA spasi putih, satu trim akan menghapus semua itu. Misalnya, Anda tidak peduli apakah perbandingannya gagal karena yang tersisa adalah "abc" atau "abc".
Untuk menemukan baris di mana col berada NULL
, string kosong atau spasi kosong (spasi, tab):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
Untuk menemukan baris di mana col berada NOT NULL
, string kosong atau spasi kosong (spasi, tab):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
Beberapa metode berharga ...
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);
Dan beberapa yang tidak berharga ...
SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;
SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;
SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
solusi terbaik saya:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE mengembalikan exp non-null pertama dalam daftar ekspresi ().
jika fieldValue adalah null atau string kosong maka: kami akan mengembalikan elemen kedua lalu 0.
jadi 0 sama dengan 0 maka nilai bidang ini adalah string nol atau kosong.
dalam python untuk contoh:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
semoga berhasil
youe cek null Dengan IS NULL dan 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
Anda bisa menggunakan isnull
fungsi untuk mendapatkan keduanya null
dan mengosongkan nilai bidang teks:
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
Anda dapat memeriksa ''
seperti NULL
dengan mengubahnya menjadi NULL
menggunakanNULLIF
--here you set '' to null
UPDATE #T SET NAME = NULLIF(NAME,'')
SELECT * FROM #T
1 JOHN
2 NULL
3 NULL
atau Anda dapat memeriksa NULL
sebagai ''
menggunakanSELECT 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
Dalam sproc, Anda dapat menggunakan kondisi berikut:
DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER
IF(COALESCE(@USER_ID,'')='')
PRINT 'HUSSAM'
oleh fungsi ini:
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
dan gunakan ini:
dbo.isnull (nilai, 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()