Suche nach einem Befehl

linii

Neuer Benutzer
Beiträge
4
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.
 
Werbung:
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)
 
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 :)
 
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]
 
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
 
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.
 
Werbung:
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.
 
Zurück
Oben