"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

T-sql

Bexda 16.07.2002 - 11:30 839 10
Posts

Bexda

Addicted
Avatar
Registered: Mar 2001
Location: siehe Avatar
Posts: 382
Ich sollt eine SQL-Abfrage im "Query Analyzer" (SQL-Server2k) erstellen. Hab da ein Problem:

Feld: PlzOrt
Inhalt: 1010 Wien

Ich will dann aber nur zB Wien heraus bekommen. Das Problem istr noch das ich teilweise auch 5-stellige PLZ habe.

Gibt es da irgend einen Befehl wo ich die PLZ ausschneiden kann. ZB alles nach dem ersten Leerzeichen ausschneiden oder so.

vielen Dank für eure rasche Hilfe.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Kann ich dir nicht auswendig sagen, und ich hab den SQL Server grad nicht installiert. Schau halt die Funktionen durch, und wenn's keine gibt, dann schreib dir eine Stored Procedure, die das macht.

Bexda

Addicted
Avatar
Registered: Mar 2001
Location: siehe Avatar
Posts: 382
leider sind meine SQL-Kenntnisse nicht sooo gut. Daher weiß ich auch den Befehl nicht.

Die Funktionen alles durchsehen? --> mir läuft die Zeit daveon --> da gibts ja hunderte *gg*

trotzdem THX

vielleicht kann mir doch noch wer helfen

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Mit SUBSTRING und PATINDEX geht's.

PS Was glaubst was ich grad gemacht hab? Die Funktionen durchgesehen. Wo ist das Problem?

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
in der Hilfe vom Queryanalyzer sind eh die Stingfunktionen schön aufgelistet!

Bexda

Addicted
Avatar
Registered: Mar 2001
Location: siehe Avatar
Posts: 382
danke für eure Hilfe ... leider bin gerade erst beim erlenen von (T-)SQL und daher kenn isch mich noch nicht soo gut aus.

Also mit Substring gehts gut aber das passt mir noch nicht.

-----------------

Select PlzOrt
From tb_test

Ergebnis:
A 1020 Wien
CZ 25070 blabla

--------------

Ich muss es irgendwie so machen:

SELECT (Left(PlzOrt,(SELECT CHARINDEX(' ', PlzOrt, 4)))) As Ort
From tb_test

Ergebnis:
A 1020
CZ 25070

-----
Was ich dann als endgültiges Ergebnis haben will:

Wien
blabla

Ich will nur den Ort haben aber soweit reichen meine Kenntisse noch nicht !??!
Die Tabelle Test hat ca. 4000 Datensätze.


vielen dank fürs weiterhelfen
Bearbeitet von Bexda am 16.07.2002, 16:48

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Du musst natürlich Right oder Substring verwenden, nicht Left. Ist das innere select echt notwendig? Ich kann's im Moment grad nicht ausprobieren, aber es kommt mir komisch vor.

Bexda

Addicted
Avatar
Registered: Mar 2001
Location: siehe Avatar
Posts: 382
keine Ahnung ... wie gesagt i kenn mi ned gut aus ... hab mich nur mal gespielt. Aber du kennst dich ja ganz gut aus, kanst mir sicher a bissal helfen ;) . Danke!

Bexda

Addicted
Avatar
Registered: Mar 2001
Location: siehe Avatar
Posts: 382
Vielleicht gibts noch ne andere möglichkeit. Ich beschreibs noch besser.

Ich hab ein Feld namens "PlzOrt" und der Inhalt ist z.B. "A 1020 Wien" oder auch "CZ 58467 Hintertupfing". Das was immer gleich ist: Länderkennzeichen Leerzeichen Postleitzahl Leerzeichen Ort. Also ich brauch nur den Text (Ort) nach dem 2. Leerzeichen

Vielen Dank im Voraus

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Bexda
Vielleicht gibts noch ne andere möglichkeit. Ich beschreibs noch besser.

Ich hab ein Feld namens "PlzOrt" und der Inhalt ist z.B. "A 1020 Wien" oder auch "CZ 58467 Hintertupfing". Das was immer gleich ist: Länderkennzeichen Leerzeichen Postleitzahl Leerzeichen Ort. Also ich brauch nur den Text (Ort) nach dem 2. Leerzeichen

Vielen Dank im Voraus
hmm - das innere select braucht man glaub ich net...

also... ich kenn die Funktion Charindex leider nicht, aber ich vermute mal, dass das Argument von dir... '4' die Startposition ist... ween ja, dann einfach right, statt left verwenden! (wie ringding gesagt hat ;) )

SELECT (Right(PlzOrt,CHARINDEX(' ', PlzOrt, 4))) As Ort FROM tb_test

achja... mit doppeltem right müssts - etwas kompliziert, aber ohne probleme gehen... weil das mit dem Startwert einfach auf 4 setzen... naja - is' ein bisserl brutal... :rolleyes:

Bexda

Addicted
Avatar
Registered: Mar 2001
Location: siehe Avatar
Posts: 382
hmm ... danke ... funktioniert auch noch nicht richtig.

Nun haber ich die Lösung für alle:

SELECT SUBSTRING(PlzOrt,
CHARINDEX(' ', PlzOrt,
CHARINDEX(' ', PlzOrt, 1) + 1) + 1,
DATALENGTH(PlzOrt) )
FROM dbo.adresse


Dank an alle!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz