Tôi muốn biết cách sử dụng NULL và một chuỗi rỗng cùng một lúc trong một WHERE
mệnh đề trong SQL Server. Tôi cần tìm các bản ghi có giá trị null hoặc chuỗi rỗng. Cảm ơn.
Tôi muốn biết cách sử dụng NULL và một chuỗi rỗng cùng một lúc trong một WHERE
mệnh đề trong SQL Server. Tôi cần tìm các bản ghi có giá trị null hoặc chuỗi rỗng. Cảm ơn.
Câu trả lời:
Select *
From Table
Where (col is null or col = '')
Hoặc là
Select *
From Table
Where IsNull(col, '') = ''
Bạn chỉ có thể làm điều này:
SELECT *
FROM yourTable
WHERE yourColumn IS NULL OR yourColumn = ''
Nếu bạn cần nó trong phần CHỌN có thể sử dụng như thế này.
SELECT ct.ID,
ISNULL(NULLIF(ct.LaunchDate, ''), null) [LaunchDate]
FROM [dbo].[CustomerTable] ct
bạn có thể thay thế null
bằng giá trị thay thế của bạn.
SELECT *
FROM TableName
WHERE columnNAme IS NULL OR
LTRIM(RTRIM(columnName)) = ''
ltrim
và rtrim
nếu mục tiêu chỉ đơn thuần là so sánh với chuỗi rỗng. LÝ DO: nếu chỉ có khoảng trắng CHỈ, một phần trang trí duy nhất sẽ loại bỏ tất cả. Ví dụ: bạn không quan tâm liệu việc so sánh thất bại bởi vì phần còn lại là "abc" hay "abc".
Để tìm các hàng có col NULL
, chuỗi rỗng hoặc khoảng trắng (dấu cách, tab):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')=''
Để tìm các hàng có col NOT NULL
, chuỗi rỗng hoặc khoảng trắng (dấu cách, tab):
SELECT *
FROM table
WHERE ISNULL(LTRIM(RTRIM(col)),'')<>''
Một số sargable phương pháp ...
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);
Và một số thứ không thể nói được ...
SELECT *
FROM #T
WHERE IIF(SomeCol <> '',0,1) = 1;
SELECT *
FROM #T
WHERE NULLIF(SomeCol,'') IS NULL;
SELECT *
FROM #T
WHERE ISNULL(SomeCol,'') = '';
giải pháp tốt nhất của tôi:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE trả về expr không null đầu tiên trong danh sách biểu thức ().
nếu fieldValue là null hoặc chuỗi rỗng thì: chúng ta sẽ trả về phần tử thứ hai sau đó 0.
vì vậy 0 bằng 0 thì trườngValue này là một chuỗi rỗng hoặc rỗng.
trong python cho mẫu mực:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
chúc may mắn
bạn kiểm tra null Với IS NULL và chuỗi rỗng Với LEN (RTRIM (LTRIM (Cột))) = 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
Bạn có thể sử dụng isnull
hàm để lấy cả hai null
và các giá trị trống của trường văn bản:
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
Bạn có thể kiểm tra ''
như NULL
bằng cách chuyển đổi nó để NULL
sử dụngNULLIF
--here you set '' to null
UPDATE #T SET NAME = NULLIF(NAME,'')
SELECT * FROM #T
1 JOHN
2 NULL
3 NULL
hoặc bạn có thể kiểm tra NULL
như ''
sử dụngSELECT 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
Trong sproc, bạn có thể sử dụng điều kiện sau:
DECLARE @USER_ID VARCAHR(15)=NULL --THIS VALUE IS NULL OR EMPTY DON'T MATTER
IF(COALESCE(@USER_ID,'')='')
PRINT 'HUSSAM'
bởi chức năng này:
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
và sử dụng cái này:
dbo.isnull (giá trị, 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()