Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mysql - "eine" abfrage - zwei ergebnisse? (https://www.delphipraxis.net/111848-mysql-eine-abfrage-zwei-ergebnisse.html)

Tyler 10. Apr 2008 11:40


Mysql - "eine" abfrage - zwei ergebnisse?
 
Moin,

folgende Abfrage:

SQL-Code:
select artikel.*
from artikel
where
left(bezeichnung, 1) in ('a', 'e', 'o', 'u', 'i') AND
substring(bezeichnung, 4, 0) in ('r', 'z', ' ') and
bezeichnung like '%[0-9]'

order by bezeichnung;
führ zu 121 Datensätzen und scheinbar wird hier die 2. Bedingung - das vierte Zeichen ist R,Z oder leer nicht beachtet.

Die folgende Abfrage macht dann alles richtig und ich bekomme knapp 10 Datensätze zurückgeliefert...


SQL-Code:
select artikel.*
from artikel
where
left(bezeichnung, 1) in ('a', 'e', 'o', 'u', 'i') AND
substring(bezeichnung, 4, 0) in ('r', 'z', ' ') and
right(bezeichnung, 1) in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
order by bezeichnung;
Der fehler liegt also offensichtlich bei meiner 3. Bedingung... versteh aber nich wieso, weshalb und warum... jemand ne Ahnung was hier schief läuft?


Danke :)

Namenloser 10. Apr 2008 12:58

Re: Mysql - "eine" abfrage - zwei ergebnisse?
 
Ich kenne die Funktion substr nicht (und bin auch kein SQL-Profi), aber ich vermute mal, der letzte Parameter von
Code:
substring(bezeichnung, 4, 0)
ist die Länge. Wenn ja würde es doch Sinn machen, dort 1 einzutragen, oder?

Tyler 10. Apr 2008 13:37

Re: Mysql - "eine" abfrage - zwei ergebnisse?
 
hm... das könnte in der Tat die Fehlerquelle sein, aber warum ändert sich das Ergebnis
dann bei der zweiten Abfrage? Ich werd das auf jeden Fall prüfen, danke dir :)

DeddyH 10. Apr 2008 13:59

Re: Mysql - "eine" abfrage - zwei ergebnisse?
 
MySQL kann doch mit regulären Ausdrücken umgehen. Wäre das hier nicht eine Option? Leider bin ich kein Experte in RegEx, sonst hätte ich einen Vorschlag gepostet.

_frank_ 10. Apr 2008 19:47

Re: Mysql - "eine" abfrage - zwei ergebnisse?
 
wegen der RegEx:

^ zeilenanfang
. beliebiges zeichen
$ zeilenende

[0-9] ein Zeichen als Ziffer

daraus würde sich ergeben:

^[aeiou] für eines der zeichen in den klammern am Anfang
^...[rz ] als 4.zeichen 'r','z' oder ' ' (alternativ auch ^.{3}[rz ])

wie man das im Mysql verwendet, weis ich aber auch nicht ;), aber wenns jemand weis, kann ers ja Posten. würde mich auch interessieren

HTH Frank

Namenloser 10. Apr 2008 20:11

Re: Mysql - "eine" abfrage - zwei ergebnisse?
 
Och, das geht einfach:
SQL-Code:
SELECT * FROM table WHERE name REGEXP '^[a-zA-Z]{5,}$'


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