Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Buchstaben in Spalte löschen (https://www.delphipraxis.net/192452-buchstaben-spalte-loeschen.html)

Walter Landwehr 19. Apr 2017 14:41

Datenbank: Firebird • Version: 2,5,5 • Zugriff über: IBO / IBExpert

Buchstaben in Spalte löschen
 
Hallo, ich möchte per SQL in einer Spalte alle Buchstaben löschen bis auf ein kleines x.

Beispiel: 100 x 2 ml oder 100 Tabletten
Ergebnis: 100 x 2 --> 100

Kennt jemand den passenden SQL Befehl?

p80286 19. Apr 2017 15:00

AW: Buchstaben in Spalte löschen
 
das kommt ganz auf den Dialekt an
aber im Umfeld von Decode/Translate müßtest Du fündig werden.

Gruß
K-H

dataspider 19. Apr 2017 15:30

AW: Buchstaben in Spalte löschen
 
Zitat:

Zitat von Walter Landwehr (Beitrag 1368283)
100 Tabletten
Ergebnis: 100 x 2 --> 100

und wo kommt das "-->" her?

Das muss man schon genau durchdenken.
Aber ich denke, ohne Stored Procedure (oder EXECUTE BLOCK) geht es nicht.

Ist es deine DB, kannst du eine SP schreiben?

Frank

Walter Landwehr 19. Apr 2017 16:06

AW: Buchstaben in Spalte löschen
 
'100 Tabletten'
--> (zu)
soll '100' ergeben

ja ist meine DB. SP könnte ich schreiben aber wie wäre hier der Ansatz.

dataspider 20. Apr 2017 07:29

AW: Buchstaben in Spalte löschen
 
Als Ansatz:

SQL-Code:
create or alter procedure sp_converttext (
    text varchar(255))
returns (
    result varchar(255))
as
declare variable l smallint;
declare variable pos smallint;
declare variable c char(1);
begin
  result = null;
  l = char_length(:text);
  if (:l > 0) then
  begin
    pos = 1;
    while (:pos <= :l) do
    begin
      c = substring(:text from :pos for 1);
      if (:c in ('0','1','2','3','4','5','6','7','8','9', 'x', ' ')) then
        -- naechste Zeile kann weg, wenn doppelte Leerzeichen bleiben sollen
        if (not ((:pos > 1) and (:c = ' ') and (substring(:result from char_length(:result) for 1) = ' '))) then
          result = coalesce(:result, '')||:c;
      pos = :pos + 1;
    end
  end
  suspend;
end
dann die Werte prüfen

SQL-Code:
select
  t.dein_feldname
, (select result from sp_converttext(t.dein_feldname)) dein_feldname_NEU
  from deine_tabelle t
wenn es passt, dann das Update...

Frank

himitsu 20. Apr 2017 09:13

AW: Buchstaben in Spalte löschen
 
Da das jede Datenbank schön einfach kann :roll:

* per regex_replace alles Unerlaubtes entfernen
oder
* über regexp_matches das gewünschte raussuchen und neu zuweisen

DeddyH 20. Apr 2017 09:31

AW: Buchstaben in Spalte löschen
 
Zitat:

Zitat von himitsu (Beitrag 1368359)
Da das jede Datenbank schön einfach kann :roll:

Woher nimmst Du diese Weisheit? AFAIK kann Firebird das erst ab Version 3.

himitsu 20. Apr 2017 09:41

AW: Buchstaben in Spalte löschen
 
Was? :shock:

Selbst MySql kann das :lol:

p80286 20. Apr 2017 10:58

AW: Buchstaben in Spalte löschen
 
Ähem Oracle auch nicht!

Gruß
K-H

jobo 20. Apr 2017 11:05

AW: Buchstaben in Spalte löschen
 
Ja, Firebird < 3 kann es nicht so ganz.
Aber 2.5 kann similar to
https://firebirdsql.org/refdocs/lang...imilar-to.html

Oracle kann es, weiß nicht genau seit wann, z.B. seit Version 10g
https://docs.oracle.com/cd/B12037_01...5/adfns_re.htm


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:08 Uhr.
Seite 1 von 2  1 2      

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