ฉันต้องการทราบวิธีการใช้ NULL และสตริงว่างพร้อมกันในWHERE
อนุประโยคใน SQL Server ฉันต้องการค้นหาระเบียนที่มีค่า null หรือสตริงว่าง ขอบคุณ
ฉันต้องการทราบวิธีการใช้ NULL และสตริงว่างพร้อมกันในWHERE
อนุประโยคใน SQL Server ฉันต้องการค้นหาระเบียนที่มีค่า 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"
หากต้องการค้นหาแถวที่ col อยู่NULL
สตริงว่างหรือช่องว่าง (ช่องว่างแท็บ):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
หากต้องการค้นหาแถวที่ col อยู่NOT NULL
สตริงว่างหรือช่องว่าง (ช่องว่างแท็บ):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
บางวิธีที่ถากถาง ...
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,'') = '';
นี่คือ MSSQL ที่น่าเกลียด:
CASE WHEN LTRIM(RTRIM(ISNULL([Address1], ''))) <> '' THEN [Address2] ELSE '' END
ทางออกที่ดีที่สุดของฉัน:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE ส่งกลับค่า expr ที่ไม่ใช่ค่าว่างแรกในรายการนิพจน์ ()
ถ้า fieldValue เป็น null หรือสตริงว่างเราจะส่งคืนองค์ประกอบที่สองตามด้วย 0
ดังนั้น 0 จึงเท่ากับ 0 ดังนั้น fieldValue นี้จึงเป็นสตริงว่างหรือว่าง
ใน python สำหรับตัวอย่าง:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
โชคดี
คุณสามารถใช้isnull
ฟังก์ชันเพื่อรับทั้งnull
ค่าและค่าว่างของช่องข้อความ:
SELECT * FROM myTable
WHERE isnull(my_nullable_text_field,'') = ''
คุณตรวจสอบ null ด้วย IS NULL และสตริงว่างเปล่าด้วย LEN (RTRIM (LTRIM (คอลัมน์))) = 0 นิ้ว
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
--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()