Top-Themen

Aktuelle Themen (A bis Z)

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

String mit charindex abtrennen und splitten

Frage Entwicklung Datenbanken

Mitglied: 0belixx

0belixx (Level 1) - Jetzt verbinden

17.03.2014, aktualisiert 15:33 Uhr, 1978 Aufrufe, 2 Kommentare

Hallo Leute,

folgendes Problem ich muss Text aus eine Datenbank in eine andere bringen, wobei der Ursprungstext bis zu 150 Zeichen in eine Spalte hat.
Die Ziel Spalten haben aber nur 25 Zeichen dafür habe ich aber 10 Stück a 25 Zeichen.


Mal ein Beispiel

Folgender Text soll getrennt werden.
Ich lieg gern im Gras und schau zum Himmel rauf, schaun die ganzen Wolken nicht lustig aus?



Ich wollte nach 20 Zeichen das Leerzeichen suche lassen und dann den Text von Stelle 0 bis Leerzeichen in eine Spalte schreiben,
danach von diesem Leerzeichen aus die nächsten 20 Zeichen wieder in eine Spalte schreiben usw.

01.
... 
02.
    left( Bemerkung, charindex(' ',Bemerkung,20)) AS 'B1', 
03.
    SubString (Bemerkung, 20, charindex (' ', Bemerkung,20)) AS 'B2', 
04.
    SubString (Bemerkung, 40, charindex (' ', Bemerkung,20)) AS 'B3' 
05.
......(usw, usw,usw) 
06.
from .....

Aber der Text wir immer mitten im Text getrennt.

Ich lieg gern im Gras
und schau zum Himme
l rauf, schaun die g
ganzen Wolken nicht
lustig aus?

Ist da meine Herangehensweise falsch?
Wäre schön wenn da mal jemand helfend eingreifen könnte.
Vielen Dank
0belixx
Mitglied: MadMax
17.03.2014 um 17:02 Uhr
Hallo 0belixx,

mit einer simplen Abfrage wirst Du eine sinnvolle Trennung wahrscheinlich nicht hinbekommen.

Das Problem bei Deiner momentanen Abfrage ist, daß "charindex(' ',Bemerkung,20)" immer den Wert 22 zurückliefert (nur bei diesem Text natürlich). Du liest also ab Position 0, 20, 40, ... immer 22 Zeichen, hast also feste Werte, die zwar mal zufällig ein Leerzeichen treffen können, aber eben nur zufällig. Und eine Überschneidung von zwei Zeichen. Weder Deine Startpunkte, noch Deine Längen sind also dynamisch. Aber das bekommst Du eben auch kaum in einer Abfrage hin. Ich denke zwar mal, es ginge, aber so eine Abfrage willst Du nicht.

Ich sehe da drei mögliche Lösungen:
1. wenn es nicht so arg viele Daten sind: Trennung von Hand

2. die einfache: Leerzeichen spielen keine Rolle, alle 25 Zeichen ist Cut und fertig. Vernünftige Trennungen werden nach und nach manuell vorgenommen.

3. Du schreibst Dir eine Routine, die jeden Text trennt (oder erst mal nur analysiert und die Werte in eine temporäre Tabelle schreibt und anschließend in einem weiteren Durchgang trennt):
- ab Zeichen 26 wird rückwärts nach dem ersten Leerzeichen gesucht
- wird eins gefunden, werden die Zeichen davor in Textspalte1 geschrieben, nächster Startpunkt ist das Zeichen danach
- wird keins gefunden, werden die ersten 25 Zeichen in Textspalte1 geschrieben, nächster Startpunkt ist Zeichen 26
- ab Zeichen Startpunkt + 26 wird wieder rückwärts nach dem Leerzeichen gesucht usw.

Du mußt Dir dann Gedanken machen, was mit den Leerzeichen passieren soll, bei obigem Vorschlag fliegt ein Leerzeichen beim Übergang raus, ist das so ok, was sollte mit mehreren aufeinanderfolgenden Leerzeichen passieren? Wenn es nicht gelöscht werden soll, soll es am Anfang oder am Ende eines Textes stehen (am Ende kann es bei manchen Anwendungen dann automatisch entfernt werden)?

Theoretisch können Dir die zehn Spalten à 25 Zeichen dabei auch knapp werden, aber da es insgesamt 100 Zeichen mehr sind, ist das recht unwahrscheinlich.

Vielleicht bringen Dich meine geistigen Ergüsse ja weiter

Gruß, Mad Max
Bitte warten ..
Mitglied: 0belixx
18.03.2014 um 08:41 Uhr
Zitat von MadMax:


Vielleicht bringen Dich meine geistigen Ergüsse ja weiter


Hi Mad Max,

Danke für die Antwort. Die Möglichkeiten die du aufgezählt hast sind mir auch schon durch den Kopf gegangen. Ich löse das jetzt in dem ich einfach ein weitere Spalte mit den jeweiligen Werten aus dem charindex fülle und dann mit diesen im substring rechne.

Gruss
0belixx
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Einen String in zwei Strings splitten per SQL
gelöst Frage von essu2307Datenbanken8 Kommentare

Hallo, ich habe folgenden String in meiner Tabelle "accountingEntryExport_13344_UTC090040_23.csv.gz" nun möchte ich per SQL-Befehl den in zwei Teilen Splitten, ...

Batch & Shell
LogFile splitten
gelöst Frage von MuHMuHBatch & Shell7 Kommentare

Guten Abend Zusammen, ich muss per robocopy eine große Anzahl Dateien und Ordner kopieren. Das klappt auch ganz gut, ...

Grafikkarten & Monitore
HDMI Splitter funktioniert nicht
Frage von MarkowitschGrafikkarten & Monitore4 Kommentare

Hallo zusammen, ich hab in einem HP - PC folgende Grafikkarte laufen : Gainward - GT640 An dieser Karte ...

Batch & Shell
Datei packen UND splitten mit Makecab
Frage von Alme123Batch & Shell6 Kommentare

Hallo zusammen, ich brauche ein kleines Script, dass einen Ordner (bzw. den Inhalt) packt und splittet. Packen funktioniert, hier ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 4 StundenBatch & Shell6 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 6 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 22 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 22 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...