Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   select "LIKE upper/lowercase" über BDE und DBase (https://www.delphipraxis.net/211884-select-like-upper-lowercase-ueber-bde-und-dbase.html)

schorsch666 16. Nov 2022 14:54

Datenbank: DBase • Version: 4 • Zugriff über: TQuery

select "LIKE upper/lowercase" über BDE und DBase
 
Moin @ALL,
ich muss mich notgedrungen noch mit der BDE und DBbase-Datenbanken rumschlagen und realisiere gerade einen Filter auf eine Kundentabelle über mehrere Felder hinweg - also quasi eine Volltextsuche. Gemacht habe ich dies mit einer TQuery und nem SQL-Statement, das mehrere "LIKE %xxx%" drin hat - und das funktioniert auch soweit (sogar recht flott).

Problem ist, dass ich leider nur "exakte Übereinstimmungen" betreffend GROSSkleinSchreibung erhalte und viele Befehle ("Concat", "+", etc.) für die BDE alle unbekannt sind, deshalb die Frage in die Runde: Hat jemand ne Idee, wie ich zB einen:

...WHERE NAME LIKE "%Meier%"... so abaendern könnte, dass auch "meier", "Meier", "MEIER", "MEier"... gefunden wird?? Wie gesagt, BDE und DBase.

Wäre super...

LG, de Schorsch...

TomF 16. Nov 2022 15:01

AW: select "LIKE upper/lowercase" über BDE und DBase
 
BDE ist bei mir schon eine Weile her - geht vielleicht "..where lower(name) like ('%meier%') ?
Ich glaube schon, dass ich das immer so gemacht habe...

Gruß, Tom

Delphi.Narium 16. Nov 2022 15:59

AW: select "LIKE upper/lowercase" über BDE und DBase
 
Bei der BDE ist die Hilfedatei LocalSQL.hlp dabei, in der Du sowas nachschauen kannst.
Fehlt sie bei Dir oder läuft auf Deinem System nicht mehr (weil altes Helpformat ...), so kannst Du hier eine Onlineversion finden: Local SQL WebHelp

SQL-Code:
where lower(name) like ('%meier%')
oder
SQL-Code:
where upper(name) like ('%MEIER%')
sollten funktionieren.

schorsch666 17. Nov 2022 07:43

AW: select "LIKE upper/lowercase" über BDE und DBase
 
Super, Danke erstmal. Werde beides checken..

..de Schorsch

schorsch666 17. Nov 2022 09:06

AW: select "LIKE upper/lowercase" über BDE und DBase
 
scheint zu funzen - DANKE! Tks auch für den Link!

..de Schorsch

himitsu 17. Nov 2022 09:33

AW: select "LIKE upper/lowercase" über BDE und DBase
 
Schade ein ilike kennt es nicht.

Mehrere andere Sprachen kennen ein "case-insensitive like".


Ansonsten hätte man vielleicht auch Regex nutzen können.
[edit]
nee?

https://www.dbase.com/Knowledgebase/...tin/bu20_b.htm
Im Script, aber nichts zum SQL zu finden (select/where)

Frickler 17. Nov 2022 09:59

AW: select "LIKE upper/lowercase" über BDE und DBase
 
Zitat:

Zitat von himitsu (Beitrag 1514902)
Schade ein ilike kennt es nicht.

Mehrere andere Sprachen kennen ein "case-insensitive like".

dBase kennt überhaupt kein SQL. Das macht die BDE. Aber FireDAC kann das auch! Man verbindet die dBase Datenbank mittels der Freeware TDBF Komponente und FireDAC über den SQLite Treiber und LocalSQL und kann so SQL-Abfragen über die mächtigere SQL-Sprache von SQLite auf die dBase Tabellen loslassen

robingard 21. Nov 2022 03:53

AW: select "LIKE upper/lowercase" über BDE und DBase
 
scheint zu funzen. danke!

Bernhard Geyer 21. Nov 2022 06:22

AW: select "LIKE upper/lowercase" über BDE und DBase
 
Zitat:

Zitat von himitsu (Beitrag 1514902)
Schade ein ilike kennt es nicht.

Mehrere andere Sprachen kennen ein "case-insensitive like".

Auf Datenbankebene legt man, wenn Case-Insensitivität nötig wäre, ein Case-Insensitives Feld (oder bei Oracle entsprechend einen Index) an.
Da kann man dann auch dann die Insensitivät auch für Accents (und Co.) definieren

fisipjm 21. Nov 2022 07:05

Ich kenne mich mit DBase absolut gar nicht aus, dafür aber recht gut mit SQL.
Es kann dir passieren, dass die Suche mit
Code:
lower(Feldname)
deutlich langsamer läuft.
Das hängt dann mit dem erzeugten Index zusammen. Für den Index ist nämlich
Code:
Feldname
und
Code:
lower(Feldname)
nicht das gleiche Feld.
Wenn du weißt, welche Felder du abfrägst, leg die einen Index für die Felder mit Lowercase an, falls das DBase mitmacht.

Oder wie Bernhard geschrieben hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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