Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird containing mit Platzhalter (https://www.delphipraxis.net/141346-firebird-containing-mit-platzhalter.html)

Kostas 7. Okt 2009 14:41

Datenbank: Firebird • Version: 1.5 • Zugriff über: IBO

Firebird containing mit Platzhalter
 
Hallo Zusammen,

ich möchte aus einer Adressen-Tabelle alle Adressen die beim zweiten Zeichen eine fünf haben, filtern.
Es ist also egal was das erste Zeichen ist und ebenfalls ab dem dritten Zeichen.
Ich war mir recht sicher das es mit dem "_" Operator als Platzhalten für irgend ein Zeichen geht, doch dem ist nicht so.
(Das mit der PLZ ist nur ein Beispiel zum vereinfachen)

SELECT DISTINCT D.ADRESSNR, D.plz
FROM ADRESSEN D
WHERE (D.plz containing '_5___')

Ich suche also in Verbindung mit containing ein Platzhalter für irgend ein Zeichen innerhalb einem String.

Hat jemand eine Idee?

Gruß Kostas

DeddyH 7. Okt 2009 14:47

Re: Firebird containing mit Platzhalter
 
Ginge das nicht einfach mit LIKE?
SQL-Code:
SELECT DISTINCT D.ADRESSNR, D.plz
FROM ADRESSEN D
WHERE (D.plz LIKE '_5%')

Kostas 7. Okt 2009 14:53

Re: Firebird containing mit Platzhalter
 
Zitat:

Zitat von DeddyH
Ginge das nicht einfach mit LIKE?
SQL-Code:
SELECT DISTINCT D.ADRESSNR, D.plz
FROM ADRESSEN D
WHERE (D.plz LIKE '_5%')


ja mit Like würde das gehen. Ich war mir so sicher das es auch mit containing geht
ich habe mich wohl geteuscht. Mit Like gehts mit containing nicht.

Delphi-Quellcode:
SELECT DISTINCT D.ADRESSNR, D.plz
FROM ADRESSEN D
WHERE (D.plz like '_5_4_')

Dankeschön
Gruß Kostas

Jürgen Thomas 7. Okt 2009 15:50

Re: Firebird containing mit Platzhalter
 
Hallo Kostas,

CONTAINING ist sozusagen eine "Vereinfachung" für LIKE, bei der die Platzhalter nicht benötigt werden. Das führt aber eben dazu, dass geprüft wird, ob der Text "irgendwo" enthalten ist; und das führt dich natürlich nicht sinnvoll zum Ziel.

Gruß Jürgen

mkinzler 7. Okt 2009 15:53

Re: Firebird containing mit Platzhalter
 
Selbst wenn die Platzhalter verwendet würden, wäre nicht sichergestellt das das 2. Zeichen eine 5 ist, es könnte auch das 3./4. usw. sein

Kostas 7. Okt 2009 15:53

Re: Firebird containing mit Platzhalter
 
Ich habe soben in meiner Datensicherung nachgeschaut und gesehen das ich ebenfalls Like verwendet habe.
Ich hätte Haus und Hof verwetten können das es mit Containing geht. :-)

Gruß Kostas

Kostas 7. Okt 2009 15:57

Re: Firebird containing mit Platzhalter
 
Zitat:

Zitat von mkinzler
Selbst wenn die Platzhalter verwendet würden, wäre nicht sichergestellt das das 2. Zeichen eine 5 ist, es könnte auch das 3./4. usw. sein

doch das geht schon indem man die volle Feldlänge nutzt.
Wenn PLZ 5 Zeichen lang ist, mit like alle fünf zeichen nutzen (D.plz like '_5_4_')
Es geht nur mit Like weil containing keine Platzhalter kennt.

Gruß Kostas

mkinzler 7. Okt 2009 16:09

Re: Firebird containing mit Platzhalter
 
In diesem Fall im Allgemeinen aber nicht.

DeddyH 7. Okt 2009 16:09

Re: Firebird containing mit Platzhalter
 
Wenn ich nicht irre, bedeutet containing ja auch "irgendwo enthalten", so dass das für Deine Anforderung (5 an 2. Stelle) nicht zielführend wäre.


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