Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Einzelne Bausteine aus String auslesen (Oracle 10g)

Frage Entwicklung Datenbanken

Mitglied: DerLomi

DerLomi (Level 1) - Jetzt verbinden

10.11.2010, aktualisiert 15:42 Uhr, 7247 Aufrufe, 3 Kommentare

Mahlzeit Leute,

mal wieder nen Prob bei einer Abfrage.

Und zwar geht es darum, das ich aus einem String der in einer Spalte (Beschreibung) der Tabelle steht, die einzelnen Bausteine als einzelne Spalte extrahieren soll.

In dieser Spalte gibt es Strings wie "HPS-Rohr 75x6" oder aber auch "Rundstahl schwarz Rd.30". Ich müsste die Werte, die jeweils nach dem Komma sind, in einzelne Spalten bekommen.

Habe mich mit "Substr" und "instr" versucht, kriege es aber bisslang nur hin, das ich mir von links die Werte ausgeben kann, welche bis zum 1. Komma folgen. Wie komme ich an die anderen Strings, welche zwischen weiteren Kommatas stehen?

Wäre es möglich das die Werte die zwischen den Kommatas stehen aus dem String in einzelne Spalten extrahiert werden können?

Vielleicht hat einer von euch eine Idee oder eine Lösung dafür. Wäre echt dankbar ^^

Ein Dankeschön schonmal im Vorraus

MfG Tobias
Mitglied: BigWim
10.11.2010 um 15:53 Uhr
Eine direkte Antwort kann ich mangels Kenntnis nicht liefern, aber aus anderen Scriptsprachen kenne ich noch Funktionen wie Split (oder Join?), die dein String nach Angabe des Trennzeichens in ein Array umwandeln. Vielleicht hilft es ja weiter.

Ansonsten bleibt nur der Weg über ein Schleife, die Dir den String auseinander nimmt. Dafür gibt es massenhaft Beispiele, die Du ja für Deine Zwecke anpassen kannst.

Wenn gar nichts hilft, poste mal den Codeausschnitt.

Markus
Bitte warten ..
Mitglied: bastla
10.11.2010 um 16:01 Uhr
Hallo DerLomi!

Vielleicht hilft Dir Oracle PL/SQL function to split strings into tokens ...

Das Stichwort "split" hat BigWim ja schon genannt; ev findest Du auch noch Ansätze bei einer Suche nach "tokenize" ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
10.11.2010 um 19:53 Uhr
Moin derLomi,

ergänzend zu BigWim und bastla:

ja, die gute Nachricht ist: solche SPLIT() und JOIN()-Functions gibt es copy&pastebar einige dutzend Male im Netz.
Kannst du stressarm verwenden.

Schlechte Nachrichten sind:
  • es geht nur mit Unterstützung des DBAdmins bzw. sogar nur auf dem Server selbst. Einen Tod musst du sterben - entweder eine PL/SQL-Procedure/ein Package wird eingerichtet oder aber DBweit user-defined-types, die es dir mit nativem SQL ermöglichen. Dann könntest du mit "Table"-Datentypen arbeiten... ist aber auch auf dem Server, an der DB selbst zu tun und einzurichten.

  • Wenn du denn meinetwegen eine Function Split( csvText, delim, x) häätest, die dir aus deinem character separated text das x-te Element rausflöht... und das Ganze in einem dynamischen Statement oder in einem View passiert... dann hast du für jeden gatesverdammten Datensatz -ich schätz mal- 5 zusätzliche Aufrufe einer Funktion Zerlege-Split(), wenn du mit max. 5 "Elementen" in dem csvText-Feld rechnest.
---> da wird dir die DB und auch der DBA einen Vogel zeigen, damit nimmst du allen anderen DB-Benutzern die Luft zum Atmen.

Wenn wenn wenn überhaupt, also wenn sich die Tabelle nicht schon an der Quelle normalisieren lässt, dann mach diese Stringzerlege-Arie einmalig und schreibe die zerbröselten Felder als Einzelfelder in eine neue Tabelle. Aber eben kein Split()/Join()-gehampel bei Ad-Hoc-Abfragen.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
2 String aus PDF auslesen und diesen zum Umbenamsen benutzen (8)

Frage von ingo101 zum Thema Batch & Shell ...

Entwicklung
gelöst Oracle as Service vs. "normale" Datenbankinstallation von Oracle 12 (1)

Frage von AlexanderH zum Thema Entwicklung ...

Heiß diskutierte Inhalte
Google Android
gelöst Android-Handy versehentlich (dauerhaft) gesperrt? (19)

Frage von FA-jka zum Thema Google Android ...

Batch & Shell
gelöst Ordner und Datei Name gleich (BATCH) (12)

Frage von clragon zum Thema Batch & Shell ...

Windows Server
SBS 2011 Standard virtualisieren (11)

Frage von HeinrichM zum Thema Windows Server ...

DSL, VDSL
gelöst DSL 200m verlängern (11)

Frage von Angela44 zum Thema DSL, VDSL ...