MySQL Abfrage

G.P.

Legendäres Mitglied
Ich moechte eine einfache MySQL Abfrage machen, allerdings darf dabei gross und kleinschreibung nicht beachtet werden.
Hat jemand eine Idee?

MfG
GP
 
Für einen simplen Anfang (ohne Fulltext) ganz einfach alles in Kleinzeichen (bzw alles gross) umwandeln per LCASE/UCASE, oder per LIKE suchen.

SELECT meinfeld FROM table WHERE LCASE(meinfeld) = LCASE('SEARCHSTRING')

oder eben

SELECT meinfeld FROM table WHERE meinfeld LIKE 'SEARCHSTRING'
 
ich ahbe die Abfrage wie folgt gemacht

SELECT meinfeld FROM table WHERE meinfeld LIKE '%SEARCHSTRING%'
leider wird dabei aber gross und kleinschreibung beruecksichtigt.
Weist du wie ich das umgehen kann?

MfG
GP
 
Hmm, hast du Binärdaten in dem Feld/Searchstring? Welcher Datentyp hat bei dir "meinfeld"?

mySQL ist diesbezüglich leider nicht sehr seriös..
sad.gif
Bei Varchar z.B. ignoriert er gross/klein.

In deinem Falle würde ich das LCASE einbauen
SELECT meinfeld FROM table WHERE LCASE(meinfeld) LIKE '%SEARCHSTRING%'

Der Searchstring sollte bei der Filterung (welche hoffentlich vorhanden ist ;-) ) natürlich ebenfalls in Kleinzeichen gewandelt werden, mittels strtolower (bei PHP).

Oder wenns in einem Zack gehen soll:
SELECT meinfeld FROM table WHERE LCASE(meinfeld) LIKE '%".strtolower($VAR_SEARCHSTRING)."%'
 
QUOTE (G.P. @ Di 10.10.2006, 21:44)SELECT meinfeld FROM table WHERE meinfeld LIKE '%SEARCHSTRING%'
leider wird dabei aber gross und kleinschreibung beruecksichtigt.

Ich verwende zwar mySql nicht. Aber normalerweise wird das unter dem Stichwort COLLATE / Sortierung abgehandelt.

Beim Microsoft-Sql-Server kann man bei den Textspalten die Sortierung direkt festlegen:


CODE Create Table test(id int Identity(1, 1),
Nachname nvarchar(50) Collate Latin1_General_CI_AI,
Info nvarchar(50) Collate Latin1_General_Bin)


Die erste Textspalte ignoriert Groß/Kleinschreibung und Akzent, die zweite vergleicht binär, berücksichtigt also Groß/Klein und Akzent. Man kann das auch in einer Abfrage explizit angeben:


CODE Select @_tbl_SyntaxElementsId = A._tbl_SyntaxElementsId,
@SyntaxElements_Name = A.str_SyntaxElements_Name,
@i_is_fragment = A.is_fragment,
@i_is_function = CoalEsce(A.is_function & 769, 0)
From @TV_tbl_SyntaxElements As A
Where A.Token Collate Latin1_General_CI_AI = @str_Token Collate Latin1_General_CI_AI


Beim Aufsetzen eines Servers kann man die Standardsortierung festlegen, ebenso beim Erstellen einer Datenbank. Vermutlich nutzen da verschiedene Hoster verschiedene Regeln, das dürfte mit Sicherheit keine mySql-Vorgabe sein.
 
Zurück
Oben