AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Locate findet nix

Ein Thema von wurzelsepp1 · begonnen am 19. Mär 2019 · letzter Beitrag vom 26. Mär 2019
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#31

AW: Locate findet nix

  Alt 25. Mär 2019, 10:45
Hallo,
ein VarChar(5) und ein Char(5) werden unterschiedlich behandelt.

Steht in dem Feld als Wert 'A', wird zurückgegeben:
beim Char(5) 'A____' (_ = Leerzeichen)
beim VarChar(5) ein 'A'

und auch einen sonnigen Montag
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Locate findet nix

  Alt 25. Mär 2019, 11:00
Ich kann in meinem SQL Tool nach einem Query auf die Gesamtdaten keine Zeichen am Anfang der Daten erkennen. Nur am Ende der Daten sind vermeintlich Leerzeichen.
Deshalb konnte ich die These, dass da etwas am Anfang steht, nicht nachvollziehen.
Das ist verständlich. Es gibt aber SQL-Tools, die führende Leerzeichen automatisch beim Visualisieren im Grid ausblenden. Wenn ich mich richtig erinnere, kann das auch eine Einstellung in der Datenbank sein, bzw. gibt es auch DB-Komponenten, die das als Voreinstellung so machen.

Wenn beim Select nur dein Wunsch-Ergebnis erreicht wird, wenn das like vorne ein "%" benötigt, ist das schon eindeutig.
Peter
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#33

AW: Locate findet nix

  Alt 25. Mär 2019, 12:06
Ich habe die Tabellenspalten nu in eine Textdatei ausgeben lassen und bekomme als Ergebnis ebenfalls keine führenden Leer- oder Sonstwiezeichen:

NET_IP: >>>1.0.0.0/24 <<<
GEO_ID: >>>2070667<<<
IP_IDX: >>>1.0.0.0/24 <<<
NET_IP: >>>1.0.1.0/24 <<<
GEO_ID: >>>1811017<<<
IP_IDX: >>>1.0.1.0/24 <<<

Sehr ich die Datei jedoch mit dem Hex-Editor an, kann ich am Anfang der beiden IP-Felder ein LF (!) erkennen.

Das wird wohl die Ursache des Problems sein - und die Erklärung dafür, warum ich das führende Zeichen nicht sehen konnte ..

Ich danke euch für den Tipp mit der Textdatei!

Nun zur Lösung: Gibt es eine Funktion bei IB mit der ich das erste Zeichen eines Feldes entfernen kann?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Locate findet nix

  Alt 25. Mär 2019, 12:12
Zitat:
Nun zur Lösung: Gibt es eine Funktion bei IB mit der ich das erste Zeichen eines Feldes entfernen kann?
Normlerweise TRIM() oder LTRIM() aus einer UDF-Bibliothek.
Oder SUBSTRING()
Markus Kinzler
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#35

AW: Locate findet nix

  Alt 25. Mär 2019, 14:30
Sodele: Mit dem Tipp, das erste Zeichen herauszukopieren war das Problem dann gelöst.
Danke an alle, die geduldig geholfen haben!

Letzte Anfängerfrage: Kann ich einen Teilstring auch über einen Index suchen?
Wenn ich mit der Option loPartialKey suche, dauert das 5 Sekunden, suche ich ohne die Option, geht das gewünscht schnell, aber findet nicht den Teilstring. Ich habe als Suchstring die ersten drei Felder der IP, in der Datenbank stehen alle vier und das Netzwerk.

Beispiel:
Datenbank -> '1.2.3.4/25'
Suchstring -> '1.2.3'
Findewunsch: Gehe zum ersten Datensatz, der den Teilstring enthält. (in der DB gibt's eh nur einen Datensatz mit dem Suchstring)

Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Locate findet nix

  Alt 25. Mär 2019, 14:37
[CODE = SQL] ... STARTING WITH ...[/CODE] sollte einen vorhandene Index verwenden; CONTAINING aber leider nicht (zumindest bei FireBird)
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#37

AW: Locate findet nix

  Alt 25. Mär 2019, 14:43
Tja,
und schon wären wird wieder bei Starting With ...

Also ist das TIBTable doch nicht so clever.
Wobei aus dem Handbuch:
Zitat:
Locate uses the fastest possible method to locate matching records. If the columns to
search are indexed and the index is compatible with the search options you specify,
Locate uses the index.
Du müsst mal mit einem DBMonitor draufsehen, sofern den deine DB-Komponenten unterstützen.
-> Google

Was für ein Index ist denn drauf (ASC, DESC)?
Und ist es nun ein Char oder VarChar-Feld?
Heiko

Geändert von hoika (25. Mär 2019 um 14:46 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#38

AW: Locate findet nix

  Alt 25. Mär 2019, 14:58
Wie oft wird gesucht?
Permanent oder sporadisch?
Situationsbedingt?

Eine IBQuery und ein passendes Select können deutlich schneller sein, als ein Locate.

Wenn man 'ne Tabelle nimmt und darin sind 4 Mio. Datensätze und man benötigt davon den letzten Datensatz, wird Locate den finden und man hat gleichzeitig auch alle Datensätze im Speicher (oder der Windowsauslagerungsdatei). Das ist auch bei heutigen System mit viel Speicher und schneller CPU nicht unbedingt die beste Lösung.

Sucht man mit 'ner Query per Select, hat man als Ergebnis in der Regel nur wenige Datensätze, im Idealfall nur einen, als Ergebnismenge.

Weiß man, dass man als Ergebnis nur einen Datensatz bekommt, bzw. will vom Ergebnis immer nur den ersten Datensatz, ist (meiner Meinung nach) eine Query mit einem konkreten Select für diesen Datensatz dem Locate über eine große Datenmenge vorzuziehen.

Bei 'ner parametrisierten Query ist das dann auch im Quelltext kein großer Aufwand.
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#39

AW: Locate findet nix

  Alt 25. Mär 2019, 15:13
Tja,
und schon wären wird wieder bei Starting With ...

Also ist das TIBTable doch nicht so clever.
Wobei aus dem Handbuch:
Zitat:
Locate uses the fastest possible method to locate matching records. If the columns to
search are indexed and the index is compatible with the search options you specify,
Locate uses the index.
Du müsst mal mit einem DBMonitor draufsehen, sofern den deine DB-Komponenten unterstützen.
-> Google

Was für ein Index ist denn drauf (ASC, DESC)?
Und ist es nun ein Char oder VarChar-Feld?
Das Feld in dem ich suche, ist Varchar und der Index ist asc.
Die Datenbankkomponenten sind die von Delphi und dort die IB Komponenten.
  Mit Zitat antworten Zitat
wurzelsepp1

Registriert seit: 9. Dez 2012
107 Beiträge
 
Delphi 3 Professional
 
#40

AW: Locate findet nix

  Alt 25. Mär 2019, 15:51
Wie oft wird gesucht?
Permanent oder sporadisch?
Situationsbedingt?

Eine IBQuery und ein passendes Select können deutlich schneller sein, als ein Locate.

Wenn man 'ne Tabelle nimmt und darin sind 4 Mio. Datensätze und man benötigt davon den letzten Datensatz, wird Locate den finden und man hat gleichzeitig auch alle Datensätze im Speicher (oder der Windowsauslagerungsdatei). Das ist auch bei heutigen System mit viel Speicher und schneller CPU nicht unbedingt die beste Lösung.

Sucht man mit 'ner Query per Select, hat man als Ergebnis in der Regel nur wenige Datensätze, im Idealfall nur einen, als Ergebnismenge.

Weiß man, dass man als Ergebnis nur einen Datensatz bekommt, bzw. will vom Ergebnis immer nur den ersten Datensatz, ist (meiner Meinung nach) eine Query mit einem konkreten Select für diesen Datensatz dem Locate über eine große Datenmenge vorzuziehen.

Bei 'ner parametrisierten Query ist das dann auch im Quelltext kein großer Aufwand.
Es wird tatsächlich sekündlich gesucht, daher ist die Performance hier ein wichtiger Faktor.

Kann ich auf die Ergebnismenge in IBQuery auch mit Fieldbyname zugreifen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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