Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Zeichen bei SELECT ignorieren (https://www.delphipraxis.net/177280-zeichen-bei-select-ignorieren.html)

Furtbichler 30. Okt 2013 11:43

AW: Zeichen bei SELECT ignorieren
 
Zitat:

Zitat von DeddyH (Beitrag 1233743)
Das stimmt so nicht ganz, aber der Aufwand dürfte abschrecken (Punkt 2.3).

:thumb: Nett. Aber ne SQL-UDF ist das tropsdem nich.

p80286 30. Okt 2013 11:57

AW: Zeichen bei SELECT ignorieren
 
Ich hatte vor einiger Zeit ebenfalls das Vergnügen mich mit Telefonnummern herum zu schlagen.
Nach einer Woche Hampelei mit Berücksichtigung von deutschen,amerikanischen,englischen und Sekretärinenvorlieben (alles natürlich wohlbegründet und jede Änderung ein Verstoß gegen die Menschenrechte) hat ein netter Mensch mit der Faust auf den Tisch gehauen, und ein Standardformat definiert. Die Umstellung war nach 2 Stunden (mit Delphi) erledigt.
Jetzt läuft jede Woche eine Prüfabfrage die eine Fehlerliste generiert und gut ist.

Gruß
K-H

fillibuster 30. Okt 2013 13:53

AW: Zeichen bei SELECT ignorieren
 
Hi,

erstmal danke für eure Antworten. Da teste ich mir das Passende raus. Hatte gestern festgestellt, dass die folgende Abfrage auch funktioniert:
Code:
SELECT * FROM contact WHERE phone LIKE '%3%0%1%2%3%4%5%6'
für z. B. +49 (30) 123 456. Ist ja bald Halloween :shock: *grusel*

Viele Grüße ...

baumina 30. Okt 2013 14:11

AW: Zeichen bei SELECT ignorieren
 
Zitat:

Zitat von fillibuster (Beitrag 1233811)
Hi,

erstmal danke für eure Antworten. Da teste ich mir das Passende raus. Hatte gestern festgestellt, dass die folgende Abfrage auch funktioniert:
Code:
SELECT * FROM contact WHERE phone LIKE '%3%0%1%2%3%4%5%6'
für z. B. +49 (30) 123 456. Ist ja bald Halloween :shock: *grusel*

Viele Grüße ...

Das entspricht dann meiner Lösung, nur gebe ich hinter der 6 auch noch ein % mit.

fillibuster 30. Okt 2013 14:21

AW: Zeichen bei SELECT ignorieren
 
Hi,
Zitat:

Zitat von baumina (Beitrag 1233814)
Das entspricht dann meiner Lösung, nur gebe ich hinter der 6 auch noch ein % mit.

Stimmt, hatte aber erst gar nicht gedacht, dass so ein SQL Konstrukt funktioniert :stupid:

Danke euch :thumb:

Furtbichler 30. Okt 2013 21:13

AW: Zeichen bei SELECT ignorieren
 
Zitat:

Zitat von fillibuster (Beitrag 1233811)
Code:
SELECT * FROM contact WHERE phone LIKE '%3%0%1%2%3%4%5%6'
für z. B. +49 (30) 123 456.

Und +301 72-3147596 passt auch :thumb:

baumina 31. Okt 2013 06:09

AW: Zeichen bei SELECT ignorieren
 
Zitat:

Zitat von Furtbichler (Beitrag 1233867)
Zitat:

Zitat von fillibuster (Beitrag 1233811)
Code:
SELECT * FROM contact WHERE phone LIKE '%3%0%1%2%3%4%5%6'
für z. B. +49 (30) 123 456.

Und +301 72-3147596 passt auch :thumb:

Aber die Ergebnismenge bleibt überschaubar und kann zur Not nochmal genauer betrachtet werden.

Furtbichler 31. Okt 2013 06:26

AW: Zeichen bei SELECT ignorieren
 
Zitat:

Zitat von baumina (Beitrag 1233875)
Aber die Ergebnismenge bleibt überschaubar und kann zur Not nochmal genauer betrachtet werden.

Das muß nicht 'zur Not' genauer betrachtet werden, sondern in jedem Fall. Und wenn Du dich darauf verlässt...nun ja. Wenn die Stecknadel in einer Handvoll Heu steckt, ist sie immer noch schwer zu finden.

Ich stehe auf dem Standpunkt, das ein Problem, das ordentlich lösbar ist, auch ordentlich gelöst werden sollte.

PS: Als Lösung für die Eingabe kompletter Telefonnummern mag es als Notbehelf durchgehen, ich würde die paar Daten (da sie ja überschaubar sind) trotzdem in-Memory filtern, und dann richtig.

baumina 31. Okt 2013 06:35

AW: Zeichen bei SELECT ignorieren
 
Ich habe in meiner Datenbank das Problem, dass ein und die selbe Telefonnummer mehr als einmal in der Datenbank drin stehen kann.

z.B.
1. Hans Müller als Kunde mit Telefonnummer
2. Hans Müller als Ansprechpartner seiner Firma mit Privatnummer
3. Hans Müller als Ansprechpartner seiner 2. Firma mit Privatnummer
usw....

Sollte nun unser Telefon klingeln, und Hans Müller ruft von seinem Privattelefon an, wird's spannend :-)

Furtbichler 31. Okt 2013 07:14

AW: Zeichen bei SELECT ignorieren
 
Namen sind nicht eindeutig, Telefonnummern schon (eher).

Ich sagt bereits, das dein Vorschlag als Notbehelft zu gebrauchen ist. Aber nur, wenn die Telefonnummern geeignet abgelegt ist. Und was ist morgen?

Konkret: Dein Vorschlag wird umgesetzt und alle sind zufrieden, denn er funktioniert für die aktuelle Problemstellung: Suche nach vollständiger(!) Telefonummer über die derzeit gespeicherten Nummern (die z.B. nach E.123 abgelegt sind).

Morgen werden jedoch die Outlook-Kontakte importiert und dort wird die Telefonnummer nach dem MS-Standard abgelegt, also +49(30)12345678 (in der DB sind sie jedoch im Format (030)12345678 abgelegt. Ja und dann ruft Hans Müller an, seine Nummer 03012345678 erscheint im Display und deine Suche findet -nichts-. Der Sachbearbeiter kann den Kunden nicht zuordnen und legt ihn im schlimmsten Fall neu an.

Irgendwann wird dann vergessen, das die Lösung erstens nicht immer das korrekte Ergebnis anzeigt, zweitens nur taugt, wenn man die zu suchende Telefonnummer vollständig angibt und drittens doch nur mit einem bestimme Format funktioniert, also eben z.B. nur E.123, aber nicht mit anderen Standards. Und spätestens dann ist die Suche keine Suche sondern ein Glücksspiel.

Deine Lösung zeigt also nicht nur zu viele an (was zu verschmerzen wäre), sondern ist leider unzuverlässig. Und damit imho so nicht zu gebrauchen.

PS: Mein Beispiel funktioniert auch, wenn die Nummern nur im MS-Format abgelegt sind, also mit internationaler Vorwahl, jedoch ohne führende Null in der Ortsvorwahl. Denn es gibt generell mindestens vier unterschiedliche Formatgruppen, die hinsichtlich der einfache Suche disjunkt sind:
Ortsvorwahl: (30) vs. (030).
Landeskennzahl: +49 vs. 0049 vs. ganz weglassen.

Wie Du siehst, wird es nie zuverlässig funktionieren, so elegant und kurz dein Vorschlag auch ist.

Ein Suchalgorithmus muss robust gegen alle Kombinationen sein, d.h. er muss die gespeicherten und die Such-Telefonnummer in LKZ, OnKZ und Rufnummer unterteilen und dann vergleichen.

Richtig richtig macht man es imho nur dann, wenn die Telefonnummern normalisiert abgelegt werden. Alles andere ist Murks.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz