![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDac
Firebird 2.1 SQL - case-sensitive?
Hi,
ist die Suche bei Firebird in Varchar-Feldern immer case-sensitive? Kann man das irgendwie in der Abfrage umgehen? Viele Grüße ... |
Re: Firebird 2.1 SQL - case-sensitive?
-Vorher beide Seiten der Abfrage in Großbuchstaben wandeln:
SQL-Code:
-Expression Index
select * from <Tabelle> where Upper(<Feld>) = Upper( <Suchbegriff>);
|
Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
|
Re: Firebird 2.1 SQL - case-sensitive?
Oder wenn du das öfterst benötigst einen Expression Index auf die Upper-Werte anlegen:
SQL-Code:
CREATE INDEX IDX_<Tabelle>_<Feld> ON <Tabelle> COMPUTED BY (UPPER (<Feld> COLLATE <Sortierung(Collation)>));
|
Re: Firebird 2.1 SQL - case-sensitive?
Hi,
jetzt habe ich aber doch noch ein Problem bei meiner Abfrage (s = string = gö):
SQL-Code:
Finden sollte er ja z. B. Göppert. Tut er aber nicht :gruebel:
SELECT LAST_NAME ||' + QuotedStr(', ') + '||FIRST_NAME AS TXT, ID, GENDER FROM CONTACTS WHERE UPPER(LAST_NAME) LIKE UPPER(''%' + s + '%'') AND STATE=1 ORDER BY LAST_NAME
|
Re: Firebird 2.1 SQL - case-sensitive?
Welchen Charset verwendest Du denn? Sonderzeichen wie äöüß etc sind nicht in jedem Characterset enthalten.
|
Re: Firebird 2.1 SQL - case-sensitive?
Was für eine COLLATION hast du angegeben?
|
Re: Firebird 2.1 SQL - case-sensitive?
na, Herr Kollege, wollen da wieder zwei Dumme auf das selbe hinaus? @Markus
|
Re: Firebird 2.1 SQL - case-sensitive?
SQL-Code:
- sollte doch eigentlich klappen, oder?
LAST_NAME Varchar(80) CHARACTER SET ISO8859_1
|
Re: Firebird 2.1 SQL - case-sensitive?
Ich glaube kaum, dass so etwas "," Also genau diese drei Zeichen im Namen vorkommen. Wozu immer diese QuotedStr ? :wall: Das macht das Ganze, nebenbei gesagt, sowieso noch dazu case-sensitiv.
Edit es sind sogar 4 Zeichen, also ", ". 8) |
Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
SQL-Code:
Charset und Collation sind beide ISO8859_1 :?
SELECT LAST_NAME, ID, GENDER FROM CONTACTS WHERE UPPER(LAST_NAME) LIKE UPPER(''%' + s + '%'')
|
Re: Firebird 2.1 SQL - case-sensitive?
Du kommst nicht drumrum, das SelectSQL.Text anzeigen zu lassen. ShowMessage etc. Dann würde man wohl direkt sehen, wo der Haken ist. Die QuotedStr für das , machen eventuell noch nicht mal was. Aber du verkettest das ja u.a. mit Firstname. Weiß der Teufel, was da im Endeffekt dabei rauskommt. Wenn der ganze Ausdruck durch die "" case-sensitiv wird, wie vermutet, na dann ist alles klar. :twisted: Öffne mal die DB im IBExpert und gucke, wie die aussieht. Bei mir in der DB ist jedenfalls von " nirgendwo was zu sehen und im Source wirst du kein QuotedStr finden.
|
Re: Firebird 2.1 SQL - case-sensitive?
Hi,
habe es jetzt so getauscht und das klappt!?!:
SQL-Code:
Jetzt werde ich das mal parametrisieren :mrgreen:
... WHERE UPPER(LAST_NAME) LIKE ''%' + AnsiUpperCase(s) + '%'' AND STATE=1 ORDER BY LAST_NAME'
Viele Grüße ... |
Re: Firebird 2.1 SQL - case-sensitive?
Ich würde statt
SQL-Code:
noch
LIKE '%<Suchstring>%'
SQL-Code:
nehmen
CONTAINING '<Suchstring>'
|
Re: Firebird 2.1 SQL - case-sensitive?
Damit könnte ich aber keine % innerhalb des Suchstrings platzieren, oder? Also
SQL-Code:
Viele Grüße ...
LIKE '%<Such%ring>%'
|
Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
|
Re: Firebird 2.1 SQL - case-sensitive?
Gibt es einen wichtigen Vorteil, CONTAINING zu verwenden ? Sehe gerade, dass bei mir an solchen Stellen noch LIKE %XY% steht. @Grolle : da stimmt trotzdem was nicht. Mache diese verfluchten QuotedStr endlich weg. :mrgreen:
|
Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
|
Re: Firebird 2.1 SQL - case-sensitive?
Jo, echt sehr wichtig. :mrgreen:
|
Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
|
Re: Firebird 2.1 SQL - case-sensitive?
Wenn man den Suchbegriff aus einem Edit o.ä. zieht oder eine Abfrage zur Laufzeit zusammensetzt kann das die Sache schon sehr erleichtern
Zitat:
SQL-Code:
ist aquivalent zu
LIKE '%<Such%ring>%'
SQL-Code:
CONTAINING '<Such'
|
Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
SQL-Code:
ist das gleiche wie
WHERE UPPER (FELD) LIKE UPPER ('%TBx%')
SQL-Code:
WHERE FELD CONTAINING 'TBx'
|
AW: Re: Firebird 2.1 SQL - case-sensitive?
Ich weiß, dieser Beitrag ist schon älter als 2 Jahre - bin über Google drüber gestolpert und die nachfolgende Aussage stimmt so nicht (mehr?):
Zitat:
SQL-Code:
liefert folgendes Ergebnis:
select '1', S.BEZEICHNG from STATUS S where S.BEZEICHNG like '%app%p%'
union select '2', S.BEZEICHNG from STATUS S where S.BEZEICHNG containing ('app')
Code:
Nur, falls nochmal jemand drüber stolpert ;)
CONSTANT BEZEICHNG
1 approved preliminary 2 approved 2 approved preliminary 2 approved under conditions |
AW: Firebird 2.1 SQL - case-sensitive?
Wenn man das einmal in Deutsch übersetzt, ist es klar, dass das nicht dasselbe sein kann.
SQL-Code:
--> Alle Datensätze, in deren BEZEICHNG "app" und irgendwo dahinter noch "p" vorkommt.
select '1', S.BEZEICHNG from STATUS S where S.BEZEICHNG like '%app%p%'
SQL-Code:
--> Alle Datensätze, deren BEZEICHNG "app" enthält
select '2', S.BEZEICHNG from STATUS S where S.BEZEICHNG containing ('app')
|
AW: Re: Firebird 2.1 SQL - case-sensitive?
Zitat:
so ist die Aussage richtig:
SQL-Code:
ist aquivalent zu
LIKE '%<Such%'
SQL-Code:
Wobei die Betrachtung ob Case-Sensitiv oder nicht mal ausser acht gelassen wird.
CONTAINING '<Such'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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 by Thomas Breitkreuz