T-sql

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/t-sql_41254/page_1 - zur Vollversion wechseln!


Bexda schrieb am 16.07.2002 um 11:30

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 schrieb am 16.07.2002 um 11:48

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 schrieb am 16.07.2002 um 11:51

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 schrieb am 16.07.2002 um 12:41

Mit SUBSTRING und PATINDEX geht's.

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


Yeahman schrieb am 16.07.2002 um 13:50

in der Hilfe vom Queryanalyzer sind eh die Stingfunktionen schön aufgelistet!


Bexda schrieb am 16.07.2002 um 16:44

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


Ringding schrieb am 16.07.2002 um 16:49

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 schrieb am 16.07.2002 um 16:58

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 schrieb am 16.07.2002 um 22:21

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 schrieb am 17.07.2002 um 03:10

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 schrieb am 17.07.2002 um 08:00

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!




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026