Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   copy oder substring ? (https://www.delphipraxis.net/152360-copy-oder-substring.html)

khh 20. Jun 2010 12:43

Datenbank: mysql • Version: egal • Zugriff über: direkt

copy oder substring ?
 
hallo zusammen,
ich hab in einer Tabellenspalte einen String mit einer Zahl am Ende.
Wie kann ich den String per Script bearbeiten, dass nur die Zahl übrigbleibt ?
Mit rtrim copy oder so?

Steh grad mal wieder aufm Schlauch ;-)


Danke gruss KHH

DeddyH 20. Jun 2010 12:44

AW: copy oder substring ?
 
Hat der String (vor der Zahl) eine feste Länge?

khh 20. Jun 2010 12:46

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030296)
Hat der String (vor der Zahl) eine feste Länge?

leider nein

der ist vollkommen unterschiedlich lang
EDIT:
das einige woran man festmachen könnte ist ein Unterstrich vor der Zahl
der Unterstich kann aber auch sonst im String vorkommen :-(

DeddyH 20. Jun 2010 12:48

AW: copy oder substring ?
 
Dann hab ich leider keine Idee, zumindest serverseitig :(

xZise 20. Jun 2010 12:49

AW: copy oder substring ?
 
Du könntest von hinten nach vorne durchsuchen, solange bis ein invalides Zeichen (also nicht 0 - 9 kommt).

Also Pseudocode (s ist der durchsuchte String und zahl ist nachher die Zahl):
Code:
zahl = '';
i = länge(s);
solange i > 0 & s[i] = ziffer dann
  zahl = s[i] + zahl;
  i--;
MfG
Fabian

khh 20. Jun 2010 12:50

AW: copy oder substring ?
 
Zitat:

Zitat von xZise (Beitrag 1030300)
Du könntest von hinten nach vorne durchsuchen, solange bis ein invalides Zeichen (also nicht 0 - 9 kommt).

Also Pseudocode (s ist der durchsuchte String und zahl ist nachher die Zahl):
Code:
zahl = '';
i = länge(s);
solange i > 0 & s[i] = ziffer dann
  zahl = s[i] + zahl;
  i--;
MfG
Fabian

also doch per Programm, nicht per SQl-Script :-(

mkinzler 20. Jun 2010 12:53

AW: copy oder substring ?
 
Besser wäre es serverseitig ( und so den Datenverkehr zu begrenzen)

Christian Seehase 20. Jun 2010 12:55

AW: copy oder substring ?
 
Moin KHH,

ich weiss nicht, ob MySQL das kann, bei MS-SQL würde ich es so machen:

Code:
SELECT
  IrgendEinName =
  CASE
    WHEN SpaltenName <> '' THEN SUBSTRING(SpaltenName,1,LEN(SpaltenName)-1)
  END
FROM TabellenName

DeddyH 20. Jun 2010 12:59

AW: copy oder substring ?
 
Evtl. ginge es auch mit einer Kombination aus reverse, locate und substring (MySQL String-Functions):
erst den String umdrehen, dann nach dem Unterstrich suchen, ab dieser Position (+1) dann aus dem Original herauskopieren. Wäre zumindest einen Versuch wert.

khh 20. Jun 2010 13:06

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030308)
Evtl. ginge es auch mit einer Kombination aus reverse, locate und substring (MySQL String-Functions):
erst den String umdrehen, dann nach dem Unterstrich suchen, ab dieser Position (+1) dann aus dem Original herauskopieren. Wäre zumindest einen Versuch wert.

mh, aber wenn ich den String umdrehe wird ja z.B. aus 12 21 und aus 122 221 :-(

DeddyH 20. Jun 2010 13:11

AW: copy oder substring ?
 
Das Umdrehen ist ja nur dazu gedacht, die Position des letzten Unterstrichs zu finden (evtl. gibt es auch dafür eine Funktion, ich hab nur auf die Schnelle keine gefunden). Kopiert werden soll ja aus dem Original.

khh 20. Jun 2010 13:13

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030311)
Das Umdrehen ist ja nur dazu gedacht, die Position des letzten Unterstrichs zu finden (evtl. gibt es auch dafür eine Funktion, ich hab nur auf die Schnelle keine gefunden). Kopiert werden soll ja aus dem Original.

ok werd ich mal so ausprobieren und dann hier berichten

DeddyH 20. Jun 2010 13:18

AW: copy oder substring ?
 
Ohne Gewähr (ich hab hier kein MySQL am Laufen):
SQL-Code:
SELECT SUBSTRING(Feld,-(LOCATE('_',REVERSE(Feld)) - 1)) FROM Tabelle

Sir Rufo 20. Jun 2010 13:24

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030314)
Ohne Gewähr (ich hab hier kein MySQL am Laufen):
SQL-Code:
SELECT SUBSTRING(Feld,-(LOCATE('_',REVERSE(Feld)) - 1)) FROM Tabelle

Noch nicht ganz, du hast das Zurückdrehen vergessen ;)
SQL-Code:
SELECT REVERSE( SUBSTRING( Feld, -( LOCATE( '_', REVERSE( Feld ) ) - 1 ) ) )
  FROM Tabelle

DeddyH 20. Jun 2010 13:25

AW: copy oder substring ?
 
Wozu zurückdrehen, ich kopiere doch aus dem Original :gruebel:

Matze 20. Jun 2010 13:27

AW: copy oder substring ?
 
Wenn ich das richtig sehe, dann unterstützt MySQL reguläre Ausdrücke. :shock:
http://dev.mysql.com/doc/refman/5.1/de/regexp.html

Damit sollte das kein Problem sein, wenn es tatsächlich so unterstützt wird.

DeddyH 20. Jun 2010 13:29

AW: copy oder substring ?
 
Bei Regenechsen halte ich mich raus, das sind für mich böhmische Dörfer :mrgreen:

xZise 20. Jun 2010 14:01

AW: copy oder substring ?
 
Moin,
okay hab mich vertan ;)

Aber zu den Regexen: Wie willst du denn damit nur den Abschnitt mit den Ziffern herausfinden? Ich kenne mich jetzt mit (My)SQL nicht so aus, aber wie kann ich denn ein SQL Statement sagen, gebe mir nur die Ziffern nach den Unterstrich zurück?

@Detlef: So schwer ist das ja nicht ;)
Code:
.*_[0-9]+
Das dürfte zumindest erkennen, ob das Dingens valide ist (sofern der Unterstrich kein Sonderzeichen ist.

MfG
Fabian

Sir Rufo 20. Jun 2010 14:38

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030317)
Wozu zurückdrehen, ich kopiere doch aus dem Original :gruebel:

Jetzt wo du es sagst ... u are right and i'm left :mrgreen:

khh 20. Jun 2010 15:04

AW: copy oder substring ?
 
SQL-Code:
SELECT REVERSE( SUBSTRING( Feld, -( LOCATE( '_', REVERSE( Feld ) ) - 1 ) ) )
  FROM Tabelle
supi, ich danke euch, so funktionierts ;-)

xZise 20. Jun 2010 15:06

AW: copy oder substring ?
 
Sicher?
Weil damit dürfte die Zahl falschherum raus kommen. Das äußerste Reverse einfach wegmachen (wie es der Poster dieser Lösung inzwischen selber eingestanden hat :) )

MfG
Fabian

DeddyH 20. Jun 2010 15:06

AW: copy oder substring ?
 
Sicher, dass das erste REVERSE dahinmuss?

[edit] :lol: 2 Doofe, ein Gedanke [/edit]

Sir Rufo 20. Jun 2010 15:08

AW: copy oder substring ?
 
Zitat:

Zitat von xZise (Beitrag 1030356)
Sicher?
Weil damit dürfte die Zahl falschherum raus kommen. Das äußerste Reverse einfach wegmachen (wie es der Poster dieser Lösung inzwischen selber eingestanden hat :) )

MfG
Fabian

ja, tauch die Gabel in Tabasco, wälze sie in Salz und Chili und drehe sie dann ganz langsam in meiner Wunde rum, ich steh auf sowas :mrgreen:

DeddyH 20. Jun 2010 15:10

AW: copy oder substring ?
 
[OT] Nimm es nicht so tragisch: to err is human, to forgive is divine. You erred, we forgive you :mrgreen: [/OT]

xZise 20. Jun 2010 15:10

AW: copy oder substring ?
 
Tut mir ja leid, hatte aber keine Lust auf lange Erklärungen :)

Also ich mache es aus positiver sicht: Nehm das von Detlef, da nicht nochmal reversed muss :)

MfG
Fabian

Sir Rufo 20. Jun 2010 15:13

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030359)
[OT] Nimm es nicht so tragisch: to err is human, to forgive is divine. You erred, we forgive you :mrgreen: [/OT]

Einen Fehler machen ist leicht
Einen Fehler erkennen ist schwer
Einen Fehler zugeben ist Hardcore

Ich wollte mich einfach nur mal fordern :mrgreen:

khh 20. Jun 2010 15:37

AW: copy oder substring ?
 
Zitat:

Zitat von xZise (Beitrag 1030356)
Sicher?
Weil damit dürfte die Zahl falschherum raus kommen. Das äußerste Reverse einfach wegmachen (wie es der Poster dieser Lösung inzwischen selber eingestanden hat :) )

MfG
Fabian

stimmt , ihr habt natürlich Recht, ohne das äussere reverse passts.

Wobei ein weiteres Problem auftritt :-(
mit
Code:
update jos_joomgallery set imgtitle = (SELECT SUBSTRING(imgtitle,-(LOCATE('_',REVERSE(imgtitle)) - 1)) FROM jos_joomgallery )
bekomme ich den Fehler :
You can't specify target table 'jos_joomgallery' for update in FROM clause


die Verwendung einer View im select statement funktioniert auch nicht :-(
EDIT: auch die Verwendung eines hilfsfeldes imgtitel2 funkt nicht :-(

DeddyH 20. Jun 2010 17:01

AW: copy oder substring ?
 
SQL-Code:
UPDATE jos_joomgallery
SET imgtitle = SUBSTRING(imgtitle,-(LOCATE('_',REVERSE(imgtitle)) - 1))

khh 20. Jun 2010 17:17

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030408)
SQL-Code:
UPDATE jos_joomgallery
SET imgtitle = SUBSTRING(imgtitle,-(LOCATE('_',REVERSE(imgtitle)) - 1))

funktioniert:-)
du bist der Beste!

Danke Gruss KHH

DeddyH 20. Jun 2010 17:19

AW: copy oder substring ?
 
Zum Glück funktioniert es, ich will ja nicht Schuld sein, wenn Du Dein Joomla zerschießt :zwinker:

khh 20. Jun 2010 17:49

AW: copy oder substring ?
 
Zitat:

Zitat von DeddyH (Beitrag 1030412)
Zum Glück funktioniert es, ich will ja nicht Schuld sein, wenn Du Dein Joomla zerschießt :zwinker:



naja, ich mach vor solchen Sachen grundsätzlich ne Sicherung der DB :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz