/ / Próbuję uruchomić kwerendę w języku SQL i chcę wiedzieć, dlaczego ADDRESS_LINE_2 już zajęło ADDRESS_LINE_1 i wyświetlało null - sql-server

Próbuję uruchomić kwerendę w języku SQL i chcę wiedzieć, dlaczego ADDRESS_LINE_2 przekracza wartość ADDRESS_LINE_1 i wyświetla serwer null - sql

SELECT
EMPLOYEE.EMPLOYEE_FNAME + EMPLOYEE.EMPLOYEE_LNAME +
EMPLOYEE.EMPLOYEE_PRIMARY_NUMBER + EMPLOYEE.EMPLOYEE_EMAIL AS EMPLOYEE,
ADDRESS.ADDRESS_LINE_1 + ADDRESS.ADDRESS_LINE_2 + ADDRESS.CITY_PROVINCE +
ADDRESS.STATE_ABBREVIATION + ADDRESS.POSTAL_CODE AS ADDRESS
FROM
EMPLOYEE
INNER JOIN
ADDRESS ON EMPLOYEE.ADDRESS_ID = ADDRESS.ADDRESS_ID

Odpowiedzi:

1 dla odpowiedzi № 1

Musisz upewnić się, że żadne dane nie są puste

isnull(ADDRESS.ADDRESS_LINE_1, "")
+ isnull(....

0 dla odpowiedzi nr 2

Jeśli połączymy łańcuch i wartość pustą, wynik jest zerowy.

Posługiwać się coalesce lub isnull aby upewnić się, że nie masz wartości null:

ADDRESS.ADDRESS_LINE_1 + COALESCE(ADDRESS.ADDRESS_LINE_2, "")

0 dla odpowiedzi № 3

Możesz zastąpić domyślne opcje dla zerowej konkatenacji:

SET CONCAT_NULL_YIELDS_NULL OFF