Мені хотілося б знати, як одночасно використовувати NULL та порожню рядок у WHEREпункті SQL Server. Мені потрібно знайти записи, які мають або нульові значення, або порожній рядок. Дякую.
Мені хотілося б знати, як одночасно використовувати NULL та порожню рядок у WHEREпункті SQL Server. Мені потрібно знайти записи, які мають або нульові значення, або порожній рядок. Дякую.
Відповіді:
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,'') = '';
моє найкраще рішення:
WHERE
COALESCE(char_length(fieldValue), 0) = 0
COALESCE повертає перший ненульовий expr у списку виразів ().
якщо fieldValue є нульовим або порожнім рядком, тоді: другий елемент повернемо тоді 0.
тому 0 дорівнює 0, тоді це полеValue - це нульовий або порожній рядок.
у python for example:
def coalesce(fieldValue):
if fieldValue in (null,''):
return 0
Щасти
ви перевіряєте null З IS NULL, а рядок 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
Ви можете використовувати isnullфункцію для отримання обох nullі порожніх значень текстового поля:
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
Ви можете перевірити ''як 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
У паростці ви можете використовувати наступну умову:
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()