1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Suche nach einem Befehl

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von linii, 23 März 2012.

  1. linii

    linii Neuer Benutzer

    Folgendes:
    Ich arbeite mit dem Microsoft SQL Server 2008 (Management Studio)

    Ich habe in einer Spalte folgende Angaben:

    CN=LWMV-11040,OU=LWMV-11040,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal

    CN=KIEG-120201,OU=KIEG-120201,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal
    u.s.w. ( das rote, dass was ich behalten muss, ändert sich natürlich in jeder Spalte.)

    Nun sollte ich einen SQL Befehl haben, der mir nur noch den Farbigen Teil hinterlässt. Alles andere muss ich gelöscht haben.

    Ich danke euch schom im Vorraus für die hilfreichen Vorschläge.
     
  2. ukulele

    ukulele Datenbank-Guru

    Ich schätze mal der Teil ist variabel und dein CN=* steht immer am Anfang.
    Code:
    DECLARE    @spalte VARCHAR(255) = 'CN=LWMV-11040,OU=LWMV-11040,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal'
     
    SELECT    left(right(@spalte,len(@spalte)-3),charindex(',',right(@spalte,len(@spalte)-3))-1)
     
    linii gefällt das.
  3. linii

    linii Neuer Benutzer

    Herzlichen Dank für die Antwort :)

    Nun bekomme ich jedoch folgenden Fehler zurück:

    Meldung 155, Ebene 15, Status 2, Zeile 19
    'VARCHAR' wird nicht als Option fr CURSOR erkannt.

    Und folgendes hab ich rein geschrieben:

    /****** Skript fr SelectTopNRows-Befehl aus SSMS ******


    SELECT

    TOP 1000 [cn]
    ,[department]
    ,[description]
    ,[displayName]
    ,[distinguishedName]
    ,[givenName]
    ,[homeDirectory]
    ,[homePhone]
    ,[mail]
    ,[mobile]
    ,[sAMAccountName]
    ,[sn]
    ,[telephoneNumber]
    ,[title]
    ,[whenCreated]
    ,[memberOf]


    DECLARE [memberOf]VARCHAR(255)='CN=LWMV-11040,OU=LWMV-11040,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal'

    SELECT left(right([memberOf],len([memberOf])-3),charindex(',',right([memberOf],len([memberOf])-3))-1)
    ,[itrUserID]
    FROM[AD].[dbo].[ADKurse]


    Ich kenne mich leider nicht so gut aus mit dem SQL :-S
    Danke für deine hilfe :)
     
  4. ukulele

    ukulele Datenbank-Guru

    Das DECLARE legt nur eine Variable zum testen an und gibt ihr den Text aus deinem Beispiel mit, über den SELECT wird daraus dann das Ergebniss.

    Für deine Abfrage musst du das folgendermaßen einbauen:
    Code:
    SELECT
     
    TOP 1000 [cn]
    ,[department]
    ,[description]
    ,[displayName]
    ,[distinguishedName]
    ,[givenName]
    ,[homeDirectory]
    ,[homePhone]
    ,[mail]
    ,[mobile]
    ,[sAMAccountName]
    ,[sn]
    ,[telephoneNumber]
    ,[title]
    ,[whenCreated]
    ,left(right([memberOf],len([memberOf])-3),charindex(',',right([memberOf],len([memberOf])-3))-1) AS [memberOf]
    ,[itrUserID]
    FROM[AD].[dbo].[ADKurse]
     
    linii gefällt das.
  5. linii

    linii Neuer Benutzer

    Hei danke dir hat wunderbar geklappt :D

    nun noch eine kleine frage was ist wen ich 2 sachen aus dem ausfiltern möchte? zb folgendes:

    CN=LWFR-09080,OU=LWFR-09080,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=LWFR-090801,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal

    und beim nächsten möchte ich dan wieder nur:

    CN=KWRW-111101,OU=KWRW-111101,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal

    Vielleicht müsste man da nur nach dem CN filtern... wen beim andern das Lernende_WB (was ich grau makiert hab) noch drinnen ist, währe dies nich sehr schlimm...

    danke dir viel mals :D
     
  6. ukulele

    ukulele Datenbank-Guru

    Eigentlich wird immer nach dem Text gefiltert, der zwischen den ersten 3 Zeichen (in diesem Fall CN=) und dem ersten Komma steht. Meine Abfrage sollte also auch LWFR-09080 und KWRW-111101 zurückgeben. Nach einem weiteren CN= zu suchen geht auch, es wird aber schwerer mit der Methode wenn die Anzahl der zu suchenden Objekte variiert. Dann gibt es aber durchaus andere Möglichkeiten, nur muss man sich schon mehr Arbeit machen.
     
  7. linii

    linii Neuer Benutzer

    hmm.. komisch mir gibt er leider nur den ersten nach dem CN aus und der 2te nicht mehr :S
     
  8. ukulele

    ukulele Datenbank-Guru

    Das wird mit der Abfrage auch immer so sein, er sucht immer nur nach dem Text zwischen den ersten 3 Zeichen und dem ersten Komma.

    CN=LWFR-09080,OU=LWFR-09080,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=LWFR-090801,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal

    gibt also LWFR-09080 zurück,

    CN=KWRW-111101,OU=KWRW-111101,OU=Kurse,OU=Benutzer,OU=BWZ,DC=bwz,DC=lokal;CN=Lernende_WB,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal;CN=Kurse,OU=Kurse,OU=Gruppen,OU=BWZ,DC=bwz,DC=lokal

    gibt KWRW-111101 zurück.

    Der Befehl
    Code:
    left(right([memberOf],len([memberOf])-3),charindex(',',right([memberOf],len([memberOf])-3))-1)
    wählt sich genau diesen Bereich aus der Zeichenkette aus.
     

Diese Seite empfehlen