BETWEEN und LIKE kombinieren?

BETWEEN und LIKE kombinieren?

am 23.10.2005 17:13:04 von Sebastian Gohres

Hi!

Ich möchte von einer Tabelle alle Einträge haben, welche in der Spalte
"plz" (=Postleitzahl) in einem definierbaren bereich liegen.
Wäre mit BETWEEN soweit kein Problem:

SELECT id FROM table WHERE plz BETWEEN 12345 AND 54321

Nun werden aber nur die ersten zwei bis drei Ziffern der Postleitzahl
angegeben, z. B. von 123 bis 543.
Nun sollen alle rausgesucht werden, wo die Postleitzahl in dem Bereich
12300 bis 54399 liegt, finden.

Nun könnte ich die Startvariable mit 0 auffüllen und die Endvariable mit
9 auffüllen, wenn da nicht folgender Haken wäre:

Die Tabelle ist international, es kommen also auch PLZ mit 4, 5, 6 oder
mehr Ziffern vor.

BETWEEN LIKE '123%' AND LIKE '543%'

klappt leider nicht, aber vielleicht kann man anhand des Ausdrucks
erkennen, was ich möchte.


MfG
S. Gohres

Re: BETWEEN und LIKE kombinieren?

am 23.10.2005 17:35:52 von Niels Braczek

Sebastian Gohres schrieb:

> Die Tabelle ist international, es kommen also auch PLZ mit 4, 5, 6 oder
> mehr Ziffern vor.
>
> BETWEEN LIKE '123%' AND LIKE '543%'
>
> klappt leider nicht, aber vielleicht kann man anhand des Ausdrucks
> erkennen, was ich möchte.

Postrleitzahlen sind zum Glück Strings und keine Zahlen. Daher geht

WHERE zip>='123' AND zip<='543'

BTW: Wo ist das PHProblem?

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´

Re: BETWEEN und LIKE kombinieren?

am 23.10.2005 19:12:50 von Sebastian Gohres

Niels Braczek wrote:

> WHERE zip>='123' AND zip<='543'
>
> BTW: Wo ist das PHProblem?

In der Datenbank stehen die vollen PLZ, für D zum Beispiel 5 stellig.
die obere Abfrage würde keine finden.

Re: BETWEEN und LIKE kombinieren?

am 23.10.2005 20:03:55 von Niels Braczek

Sebastian Gohres schrieb:
> Niels Braczek wrote:
>
>> WHERE zip>='123' AND zip<='543'
>>
>> BTW: Wo ist das PHProblem?
>
> In der Datenbank stehen die vollen PLZ, für D zum Beispiel 5 stellig.
> die obere Abfrage würde keine finden.

Doch, wenn die Plz - wie es insbesondere bei internationalen Plz
erforderlich ist - als *String* (zB VARVHAR(16)) gespeichert sind.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´

Re: BETWEEN und LIKE kombinieren?

am 25.10.2005 01:05:36 von Sebastian Gohres

Niels Braczek wrote:

> Doch, wenn die Plz - wie es insbesondere bei internationalen Plz
> erforderlich ist - als *String* (zB VARVHAR(16)) gespeichert sind.

Aber von 51 bis 51 findet nicht z.B. 51382
Und 0 bis 9 findet nicht z.B. 91352

MfG

S. Gohres

Re: BETWEEN und LIKE kombinieren?

am 25.10.2005 02:31:28 von Niels Braczek

Sebastian Gohres schrieb:
> Niels Braczek wrote:
>
>> Doch, wenn die Plz - wie es insbesondere bei internationalen Plz
>> erforderlich ist - als *String* (zB VARVHAR(16)) gespeichert sind.
>
> Aber von 51 bis 51 findet nicht z.B. 51382
> Und 0 bis 9 findet nicht z.B. 91352

Hänge an die obere Grenze einfach ein 'Z' dran, dann klappt's.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
`----------------------------------------------------------- -----´