Próbowaliście kiedyś łączyć wartości kilku pól i w wyniku tej operacji otrzymywaliście NULL? Dzieje się tak ze względu na fakt, iż NULL jest nieporównywalny z żadnym typem danych tak więc dodanie jakiejkolwiek wartości do NULL w rezultacie daje NULL. Aby obejść ten problem mamy kilka możliwości, które postaram się przedstawić w dalszej części tego artykułu.
W SQL Server możemy znaleźć właściwość CONCAT_NULL_YIELDS_NULL. Kontroluje ona zachowanie SQL Server w przypadku konkatenacji pól zawierających wartość NULL. Domyślnie jest ona włączona. Dla przykładu
SET CONCAT_NULL_YIELDS_NULL ON GO SELECT 'abc' + NULL AS RESULTSET GO CONCAT_NULL_YIELDS_NULL OFF GO SELECT 'abc' + NULL AS RESULT GO
W rezultacie otrzymujemy:
Jak widać w bardzo prosty sposób można zmodyfikować zachowanie SQL Server jeśli chodzi o wartości NULL. Jednak nie zaleca się modyfikacji tej opcji, pożądany efekt można osiągnąć w lepszy sposób. A mianowicie używając funkcji ISNULL lub też COALESCE.
SELECT ISNULL('abc','') + ISNULL(NULL,'') AS RESULT GO SELECT COALESCE('abc','') + COALESCE(NULL,'') AS RESULT GO
Jedyna różnica pomiędzy tymi funkcjami jest taka, że ISNULL może zamiast pola podstawić tylko jedną wartość, a COALESCE wiele. Myślę, że znajomość tych trzech bardzo prostych funkcjonalności pozwala na rozwiązanie bardzo wielu problemów na które napotykamy w codziennej pracy.
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
Last comments