Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL 5 stellige Nummer auslesen (https://www.delphipraxis.net/85390-sql-5-stellige-nummer-auslesen.html)

needatip 30. Jan 2007 09:46

Datenbank: MS SQL Server • Version: 2000 • Zugriff über: ADO

SQL 5 stellige Nummer auslesen
 
Hallo,
ich möchte gerne wissen, ob in einem Feld irgendeine 5-stellige Nummer
vorkommt.
z. B. Feldinhalt : 'blablablablabla 13457 blablablabla blablabla bla'
Ergebnis alle Zeilen, in denen eine 5-stellig Nummer vorkommt.
Lässt sich das mit SQL realisieren, oder muss ich eine Delphi-Routine schreiben?

sirius 30. Jan 2007 09:48

Re: SQL 5 stellige Nummer auslesen
 
Na wir wärs mit
SQL-Code:
select * from tableA where Ax between 10000 and 99999

marabu 30. Jan 2007 10:11

Re: SQL 5 stellige Nummer auslesen
 
Hallo,

eine Intervallsuche passt irgendwie nicht zu dem Beispiel. Vielleicht doch besser eine User-Defined-Function?

Grüße vom marabu

needatip 30. Jan 2007 10:14

Re: SQL 5 stellige Nummer auslesen
 
Zitat:

select * from tableA where Ax between 10000 and 99999
wird nicht gehen, da es sich um Textfelder handelt.

Mit der 'User defined function' hab ich keinen blassen Schimmer !

marabu 30. Jan 2007 10:18

Re: SQL 5 stellige Nummer auslesen
 
Wenn du magst, dann lese dich ein: klick

needatip 30. Jan 2007 10:45

Re: SQL 5 stellige Nummer auslesen
 
Werd ich machen (sobald ich in Rente gehe :wink: ).
Habs mir angesehen. Allerdings glaub ich baue ich mir dann doch eine Delphi-Routine.
Trotzdem vielen Dank.

omata 30. Jan 2007 18:38

Re: SQL 5 stellige Nummer auslesen
 
Hallo needatip,

vielleicht so...

SQL-Code:
SELECT *
FROM tabelle
WHERE feld LIKE '%[0-9][0-9][0-9][0-9][0-9]%'
Gruss
Thorsten

shmia 30. Jan 2007 18:43

Re: SQL 5 stellige Nummer auslesen
 
Die Tatsache, dass du die Nummer brauchst, aber kein eigenes Feld vorgesehen hast,
zeigt dass die Tabellenstruktur nicht (mehr) ausreichend ist.
=> neue Felder einführen

needatip 30. Jan 2007 18:51

Re: SQL 5 stellige Nummer auslesen
 
Ja klappt gut, aber da bekomm ich auch alle Zeilen mit einer Ziffernanzahl > 5.
Ich möchte aber nur die Zeilen, in denen eine 5-stellige Nummer vorkommt.
Ansonsten hilft mir das schon sehr viel weiter und die Abfrage ist echt schnell.

omata 30. Jan 2007 18:53

Re: SQL 5 stellige Nummer auslesen
 
Dann versuch das doch mal so...

SQL-Code:
SELECT *
FROM tabelle
WHERE feld LIKE '%[^0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'
Gruss
Thorsten

shmia 30. Jan 2007 18:58

Re: SQL 5 stellige Nummer auslesen
 
Deine Tabellenstruktur ist falsch, da deine Felder nicht atomar gespeichert sind!
Dazu brauchst es etwas Datenbank-Theorie:
Zitat:

4.3 Erste Normalform (1NF)
4.3.1 Definition
Eine Relation ist in der Ersten Normalform, wenn jeder Attributwert atomar ist.
4.3.2 Erklärung
Ein Attributwert ist atomar, wenn er nicht aus mehreren Werten zusammengsetzt ist. So wäre z. B. der Attributwert (Klaus Müller, Elsenheimerstr. 7, 80187 München) nicht atomar, da er eine vollständige Adresse enthält, die in mehrere Attribut aufgeteilt werden kann.
Abhilfe:
Attribute mit Nicht-atomaren-Attributwerten werden in mehrere Attribute aufgeteilt. Eine Wiederholungsgruppe wird aus der Tabelle entfernt und in einer eigenen Tabelle untergebracht.
Zum nachlesen: http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/

omata 30. Jan 2007 19:11

Re: SQL 5 stellige Nummer auslesen
 
Das obige Beispiel reichte noch nicht...

SQL-Code:
SELECT *
FROM tabelle
WHERE feld LIKE '%[^0-9][0-9][0-9][0-9][0-9][0-9][^0-9]%'
   OR feld LIKE '%[^0-9][0-9][0-9][0-9][0-9][0-9]'
   OR feld LIKE '%[0-9][0-9][0-9][0-9][0-9][^0-9]'
   OR feld LIKE '[^0-9][0-9][0-9][0-9][0-9][0-9]%'
   OR feld LIKE '[0-9][0-9][0-9][0-9][0-9][^0-9]%'
   OR feld LIKE '[0-9][0-9][0-9][0-9][0-9]'

needatip 31. Jan 2007 15:41

Re: SQL 5 stellige Nummer auslesen
 
Ja natürlich ist mir bewusst, dass das keine saubere Datenbankstruktur ist.
Es handelt sich hier um Importdateien eines alten Systems.

Trotzdem haben mir die Beiträge sehr viel weiter geholfen.

Vielen Dank erstmal.

:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.

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