T-sql
Bexda 16.07.2002 - 11:30 839 10
Bexda
Addicted
|
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
|
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
|
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
|
Mit SUBSTRING und PATINDEX geht's.
PS Was glaubst was ich grad gemacht hab? Die Funktionen durchgesehen. Wo ist das Problem?
|
Yeahman
OC Addicted
|
in der Hilfe vom Queryanalyzer sind eh die Stingfunktionen schön aufgelistet!
|
Bexda
Addicted
|
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
|
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
|
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
|
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
Legendundead
|
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_testachja... 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...
|
Bexda
Addicted
|
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!
|