Jump to content

SQL Query um Hostname von DNS-Name zu trennen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

für den vergleich von Inventarisierungsdaten in einer Datenbank versuche ich derzeit mithilfe einer SQL-Query nur den Hostname aus einem DNS-Namen zu selektieren. Hat ggf. jemand einen Tip wie man einen Text bis zu einem Trennzeichen ausgibt?

Folgende Lösung habe ich derzeit gefunden, leider wird aber das Trennzeichen noch mit Angezeigt: (MS-SQL)

 

SQL-Tabelle: INVENT

Spalte: DNS_Name enthält Texte in der Form servername.domaene.de

 

SELECT (Left([DNS_NAME],(SELECT CHARINDEX('.', [DNS_NAME],-1)))) As Name,DNS_NAME From INVENT

 

Als Ausgabe kommt jetzt für den Inhalt "sv1.test.de" das Ergebnis "sv1."

Nun muss leider noch der "." Punkt irgendwie weg.

 

Viele Grüße

Tobi

Link zu diesem Kommentar

Hallo Nils,

 

wow, vielen Dank für die schnelle Antwort. Ich habe das gerade getestet, leider bekomme ich einen Fehler, wahrscheinlich weil 'NULL' Werte in der Tabelle für "-1" enthalten sind:

 

SELECT (Left([DNS_NAME],((SELECT CHARINDEX('.', [DNS_NAME],1))-1))) As Name,DNS_NAME From INVENT

 

Fehler:

Msg 537, Level 16, State 3, Line 46

Invalid length parameter passed to the LEFT or SUBSTRING function.

 

Mit

 

SELECT (Left([DNS_NAME],((SELECT CHARINDEX('.', [DNS_NAME],1))+1))) As Name,DNS_NAME From INVENT

 

bekomme ich die Ausgabe sv1.t bei dem Inhalt sv1.test.de. Also würde das "-1" wie Du geschrieben hast schon passen.

 

Gruß

Tobi

 

Link zu diesem Kommentar

Moin,

 

du könntest das abfangen, indem du eine WHERE-Klausel mit "IS NOT NULL" einfügst. Oder du nutzt die Funktion "ISNULL" für die Spalte DNS_NAME, um bei NULL-Werten einen Dummy-String nur mit einem Punkt anzugeben (wodurch die Berechnung dann 0 ergibt, was für LEFT keinen Fehler ergeben sollte; der Wert darf nur nicht negativ sein).

 

Gruß, Nils

Link zu diesem Kommentar

Hey Nils,

 

genau, das ist die Lösung! Danke! Ich musste allerdings noch bei der Query die Einträge ohne Trennzeichen entfernen, sonst kommt auch der Fehler.

 

Also, hier die funktionierende Version:

 

SELECT (Left([DNS_NAME],((SELECT CHARINDEX('.', [DNS_NAME],1)where DNS_NAME is not null AND DNS_NAME like '%.%')-1))) As Name,DNS_NAME From INVENT

 

Vielen Dank, sonst hätte ich noch lange gesucht.

 

Gruß

Tobi

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...