Oracle SQL

stoekkenen

Aktives Mitglied
16. März 2007
55
0
hallo

ich arbeite neu mit dem "SQL Server Management Studio Express".
dabei habe ich folgedes sql-problem:

ich habe eine tabelle 'artikel' worin das feld 'name' enthalten ist.
in diesem feld 'name' hat es jeweils 2 worte die durch ' - ' getrennt sind --> bsp: Hans - Muster (Privat)
mit welcher sql-abfrage, kann ich aus diesem string 'Hans - Muster (Privat)' nur den Namen 'Muster' ausgeben?
für mich ist 'Hans - ' und '( Privat)' nicht wichtig und wird somit nicht benötigt...

da ich von sql keine ahnung habe, wäre ich um hilfe sehr dankbar.

ich hoffe das mir jemand weiterhelfen kann.

danke schon im voraus für die hilfe.

gruss
 

thuhn01

Guest
AW: Oracle SQL

Ich habe schon seit 9 Jahren nicht mehr mit Oracle gearbeitet.
Es müsste aber auch dort einen charindex Befehl geben, mit dem kann man die Position des Zeichens "-" bestimmen, in Verbindung mit Substring kannst Du dann alles was davor oder danach vorkommt auslesen.
 

stoekkenen

Aktives Mitglied
16. März 2007
55
0
AW: Oracle SQL

hallo thuhn01

danke für dein feedback.
hast du dafür ein beispiel ich bin momentan noch nicht so geübt in sql :(
wie kann ich die klammerbegriffe den zusätzlich ausschneiden?
gruss markus
 

thuhn01

Guest
AW: Oracle SQL

hallo thuhn01

danke für dein feedback.
hast du dafür ein beispiel ich bin momentan noch nicht so geübt in sql :(
wie kann ich die klammerbegriffe den zusätzlich ausschneiden?
gruss markus

Sorry, ich gebe - wegen der Gefahr der Datenzerstörung - keine ungetesteten SQLs raus. Schon gar nicht für andere Plattformen die ich nicht mehr kenne.
Bitte lies dazu die entsprechenden Anleitungen Deines Servers. Das mag jetzt einmalig zu langwierig erscheinen, aber im Endeffekt spart es enorm Zeit.

Google hat aber auch sehr viel zu sagen wenn man nur fragt:

charindex oracle - Google-Suche

substring oracle - Google-Suche
 

stoekkenen

Aktives Mitglied
16. März 2007
55
0
AW: Oracle SQL

habe da mal was gemacht :)

WITH TEIL1 AS (


select substr(A.cName),v_pos := instr (A.cName,' - '),100 as POS_NAME
, replace(A.cName,'?','''') as Name
, A.fVKBrutto as VKBrutto
, A.nLagerbestand as LagerAnz

from [eazybusiness].[dbo].[tartikel] A



where A.fGewicht = 0.01 and

a.cAktiv = 'y'

-- and A.cArtNr between 1 and 500

GROUP BY A.cName
, A.fVKBrutto
, A.nLagerbestand

),

----------

TEIL2 AS

(


select substr(B.POS_NAME),1,v_pos := instr (B.POS_NAME,' (') as Name2
, B.fVKBrutto as VKBrutto
, B.nLagerbestand as LagerAnz

from TEIL1 B

GROUP BY A.cName
, A.fVKBrutto
, A.nLagerbestand

)

select Name2
, AVG(CAST(B.fVKBrutto)) as VKBrutto_MW
, SUM(B.nLagerbestand) as LagerAnz_tOTAL

from TEIL2 B

GROUP BY B.Name2
, B.fVKBrutto
, B.nLagerbestand


kann mir jemand einen tip geben, wie ich das baby zum laufen bringe?
danke