Axel Richter: MySQL / Perl -Auslesen von Zeilen-

Beitrag lesen

Hallo Tobias,

Alledings sehe ich auch dort keinen Vorteil gegenüber
... WHERE name LIKE 'a%'
CK wird wissen von was er redet, wenn er von LIKE abrät: </archiv/2002/3/6910/#m38231> :-)

Du musst _genauer_ lesen. Dort ist von "name LIKE '%ausdruck%'" (zwei! %) die Rede. Das ist die Suche nach dem Ausdruck in der _Mitte_ des Feldinhalts. Das _kann_ von keinem Index abgedeckt sein und erfordert in jedem Fall einen Full Table Scan. Bei den Suche mit "name LIKE 'a%'" wird aber ein Index auf dem Feld name schon berücksichtigt.

... WHERE name REGEXP '^a'
ein regulärer Ausdruck ist hier wohl etwas oversized :-)

Warum?

, weil es nämlich zur 100%-igen Ersetzung
... WHERE LEFT(name,1)='a' OR LEFT(name,1)='A'
heißen müsste.
nein, LEFT(name,1)='a' findet sowohl "Andreas" als auch "andreas"

Stimmt. MySQL vergleicht ja selbst mit dem Operator = nicht nach Gross- und Kleinschreibung. Es sei denn, man fordert einen BINARY-Vergleich.

mysql> select "a" = "A";
        -> 1
mysql> select BINARY "a" = "A";
        -> 0

viele Grüße

Axel