w MS SQL Server, można zrobić:Co jest odpowiednikiem PostgreSQL dla ISNULL()
SELECT ISNULL(Field,'Empty') from Table
Ale w PostgreSQL pojawia się błąd składni. Jak emulować funkcjonalność ISNULL()
?
w MS SQL Server, można zrobić:Co jest odpowiednikiem PostgreSQL dla ISNULL()
SELECT ISNULL(Field,'Empty') from Table
Ale w PostgreSQL pojawia się błąd składni. Jak emulować funkcjonalność ISNULL()
?
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
Albo bardziej idiomatyczne:
SELECT coalesce(field, 'Empty') AS field_alias
+1 dla 'coalesce'. (P.S. Możesz to zrobić również w MS SQL Server.) –
Są jednak inne przypadki użycia IS NULL, więc dobrze jest znać oba. –
Myślę, że warto zauważyć, że jest to "koalescencja", która jest w standardzie SQL, z 'isnull' będącym funkcją specyficzną dla MS, która zasadniczo jest" koalescencyjna "z tylko dwoma parametrami. – GSerg
utworzyć następującą funkcję
CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 "
"is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'
i będzie ona działać.
Możesz tworzyć różne wersje z różnymi typami parametrów.
Proszę, nikt tego nie robi. Zamiast tego używaj funkcji koalesce(), aby Twoje DBA Cię nie nienawidziło. – Jordan
Zastosowanie COALESCE()
zamiast:
SELECT COALESCE(Field,'Empty') from Table;
Funkcjonuje podobnie jak ISNULL
, choć zapewnia większą funkcjonalność. Coalesce zwróci pierwszą niezerową wartość na liście. Zatem:
SELECT COALESCE(null, null, 5);
zwraca 5, natomiast
SELECT COALESCE(null, 2, 5);
powraca 2
zlewają wezmą dużą liczbę argumentów. Nie ma udokumentowanego maksimum. Testowałem 100 argumentów i udało się. To powinno wystarczyć w większości sytuacji.
Jak emulować funkcję ISNULL()?
SELECT (Field IS NULL) FROM ...
To emuluje dokładną funkcjonalność isnull, nie wiesz, dlaczego jest odrzucane. – smackshow
@artur Nie rozumiesz, jak działa isnull. – datashaman
Najlepsza odpowiedź na pytanie, oczywiście. To wyrażenie jest pełnym równoważnikiem ISNULL(). COALESCE() jest bardzo inteligentny i interesujący, ale nie może wykonać ISNULL(), gdy jest zamknięty. – Skrol29
Spróbuj:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
To jest miłe, ponieważ obejmuje przypadek, gdy pole tekstowe NIE ma wartości NULL, ale także "puste". – soulia
Nie, nie mogę tego zrobić w MSSQL. Ten kod się nie skompiluje. 'ISNULL' przyjmuje dwa argumenty i zwraca drugi, pierwszy to' null', w przeciwnym razie pierwszy. – GSerg
@GSerg, masz rację. naprawiono to. –
Gserg Byron i tak można zobaczyć tutaj przykładu z mojego komputera SELECT ISNULL (a.FechaEntregada, '') jako test z dbo.Amonestacion https://msdn.microsoft.com/en-us/ library/ms184325.aspx – Juan