![]() |
Mysql - "eine" abfrage - zwei ergebnisse?
Moin,
folgende Abfrage:
SQL-Code:
führ zu 121 Datensätzen und scheinbar wird hier die 2. Bedingung - das vierte Zeichen ist R,Z oder leer nicht beachtet.
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; Die folgende Abfrage macht dann alles richtig und ich bekomme knapp 10 Datensätze zurückgeliefert...
SQL-Code:
Der fehler liegt also offensichtlich bei meiner 3. Bedingung... versteh aber nich wieso, weshalb und warum... jemand ne Ahnung was hier schief läuft?
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; Danke :) |
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:
ist die Länge. Wenn ja würde es doch Sinn machen, dort 1 einzutragen, oder?
substring(bezeichnung, 4, 0)
|
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 :) |
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.
|
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 |
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 07:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz