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

Mitglied: 0belixx

0belixx (Level 1) - Jetzt verbinden

17.03.2014, aktualisiert 15:33 Uhr, 2003 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
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, ...

Netzwerke
Subnetz splitten
gelöst Frage von macherlthomasNetzwerke3 Kommentare

Hey Leute, ich hätte da eine doofe Anfängerfrage: Ich hab hier z.B: 2 Standorte (Verbindung über das Internet und ...

XML
XML Datei mit Powershell splitten
gelöst Frage von LianenSchwingerXML2 Kommentare

Hallo, ich habe eine riesige Exportdatei im XML-Format die ich nicht weiterverarbeiten kann. Der Aufbau ist wie folgt: Ich ...

Netzwerke
PoE Splitter mit zwei Ausgangsspannungen
gelöst Frage von CthluhuNetzwerke12 Kommentare

Hallo zusammen, Ich soll ein Modem und einen Router über PoE (mit PoE Splitter) versorgen. Hintergrund beides kann von ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs9 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Debian
Wie finde ich den betroffenen user
Frage von ProtectedDebian8 Kommentare

Hallo, Wie kann ich den User finden der dies verursacht hat? Betriebsystem ist Debian 7 your Server/Customer with the ...

Voice over IP
Vodafone IP Anlagenanschluss - TK-Anlage einrichten
Frage von BytedreherVoice over IP8 Kommentare

Moin Zusammen, wir hatten gestern bei uns die Umstellung auf den neuen IP Anschluss bei Vodafone. Vodafone IP Anlagenanschluss ...