2016-04-20 17 views
0

Unten ist die SQL-Abfrage, die ich verwende, um den Namen und die Adressinformationen unseres Entitätskontakts aus zwei verschiedenen Tabellen abzurufen. Jetzt versuche ich Entity-Kontakte auszuschließen, die weder Adress- noch Nameninformationen haben, die als null oder leer angezeigt werden. Am Ende möchte ich Entitätskontakte, die entweder Namen oder Adressinformationen oder beides haben.SQL: Entfernen von Spalten mit null und leeren Werten

SELECT 
    [FirstName] 
    ,[MiddleName] 
    ,[LastName] 
    ,[DateOfBirth] 
    ,[EntityAddress].[StreetNumber] 
    ,[EntityAddress].[fk_Direction] 
    ,[EntityAddress].[StreetName] 
    ,[EntityAddress].[fk_StreetType] 
    ,[EntityAddress].[Apartment] 
    ,[EntityAddress].[city] 
    ,[EntityAddress].[state] 
    ,[EntityAddress].[zip] 
    ,[EntityAddress].[country] 
    ,[pk_entity] 
FROM [entity] 
Full Join [entityaddress] 
On [entity].pk_entity=[entityaddress].fk_entity 
Order by pk_entity desc 
+0

hinzufügen where-Klausel und nach Nullen und Leerzeichen für Namen UND Adressen suchen. Kombinieren Sie die Prüfungen mit OR-Bedingung. –

Antwort

0

Versuchen Sie folgendes:

SELECT 
    e.[FirstName] 
    ,e.[MiddleName] 
    ,e.[LastName] 
    ,e.[DateOfBirth] 
    ,[ea].[StreetNumber] 
    ,[ea].[fk_Direction] 
    ,[ea].[StreetName] 
    ,[ea].[fk_StreetType] 
    ,[ea].[Apartment] 
    ,[ea].[city] 
    ,[ea].[state] 
    ,[ea].[zip] 
    ,[ea].[country] 
    ,e.[pk_entity] 
FROM [entity] e 
Full Join [entityaddress] ea 
On [e].pk_entity=[ea].fk_entity 
where (e.[LastName] is not null and [LastName]<>'') AND ([ea].[StreetName] is not null and [ea].[StreetName] <> '') 
Order by pk_entity desc 
+0

Danke irakiG. Es verengte es ein wenig, mehr als ich suchte, aber trotzdem danke. –

0

Diese funktionieren sollte. als x <> '' prüft auf leere Zeichenfolge und wenn der Wert NULL ist, dann wird UNKNOWN anstelle von TRUE zurückgegeben, daher sind Sie sicher.

SELECT 
    [FirstName] 
    ,[MiddleName] 
    ,[LastName] 
    ,[DateOfBirth] 
    ,[EntityAddress].[StreetNumber] 
    ,[EntityAddress].[fk_Direction] 
    ,[EntityAddress].[StreetName] 
    ,[EntityAddress].[fk_StreetType] 
    ,[EntityAddress].[Apartment] 
    ,[EntityAddress].[city] 
    ,[EntityAddress].[state] 
    ,[EntityAddress].[zip] 
    ,[EntityAddress].[country] 
    ,[pk_entity] 
FROM [entity] 
Full Join [entityaddress] 
On [entity].pk_entity=[entityaddress].fk_entity 
where (FirstName <> '') or (MiddleName <> '') or (LastName <> '') or ([entityaddress].[StreetName] <> '') 
Order by pk_entity desc 
+0

Danke BoldCoder, das hat geholfen, es besser einzugrenzen als meine Versuche. –

0

Ich würde dies versuchen:

SELECT 
    e.[FirstName] 
    ,e.[MiddleName] 
    ,e.[LastName] 
    ,e.[DateOfBirth] 
    ,[ea].[StreetNumber] 
    ,[ea].[fk_Direction] 
    ,[ea].[StreetName] 
    ,[ea].[fk_StreetType] 
    ,[ea].[Apartment] 
    ,[ea].[city] 
    ,[ea].[state] 
    ,[ea].[zip] 
    ,[ea].[country] 
    ,e.[pk_entity] 
FROM [entity] e 
Full Join [entityaddress] ea 
On [e].pk_entity=[ea].fk_entity 
where LEN(ISNULL(e.[LastName], '')) > 0 or LEN(ISNULL([ea].[StreetName], '')) > 0 
Order by pk_entity desc 

Was das bedeutet ist, ersetzen NULL durch leeren Raum, und zwar ein LEN und sieht, wenn er größer als 0

ist
+0

Danke domenicr, das hat geholfen, es einzugrenzen und ein bisschen näher, was ich gesucht habe. –

Verwandte Themen