Mailinglisten-Archive |
Mark Arnold schrieb am Donnerstag, 1999-04-01 11:58:31: > Christoph Hanser schrieb: [...] > > ich dachte, daß mit > > => select * from tablename where name LIKE 'HALLO' > > > > die Groß- und Kleinschreibung egal ist und dass dieser Befehl > > sowohl hallo als auch HAllO oder HALLO findet.... > Groß- und Kleinschreibung ist zwar bei den SQL-Befehlen und > Tabellennamen egal, nicht aber bei String-Operationen bzw. -Vergleichen. Bei normalem SQL-92 ist das evtl. so (weiß ich nicht auswendig), aber bei MySQL wird Groß-/Kleinschreibung bei Textvergleichen normalerweise _nicht_ beachtet - zumindest in den neueren Versionen (ich habe hier V3.22.19b unter Solaris 2.6). Ich hab's eben getestet und auch das Handbuch sagt ausdrücklich: | 5.1 MySQL extensions to ANSI SQL92 | [...] | * All string comparisons are case insensitive by default, with | sort ordering determined by the current character set (ISO-8859-1 | Latin1 by default). If you don't like this, you should declare your | columns with the BINARY attribute, which causes comparisons to be | done according to the ASCII order used on the MySQL server host. Ich poste das jetzt zum dritten mal in kurzer Zeit - da scheint großer Informationsbedarf zu sein ... ;-) Ganz speziell zu Textvergleichen kommt's im Handbuch noch genauer: | 16.13 16.13 Case sensitivity in searches | | By default, MySQL searches are case-insensitive (although there are | some character sets that are never case insensitive, such as | czech). That means that if you search with col_name LIKE 'a%', you | will get all column values that start with A or a. If you want to make | this search case-sensitive, use something like INDEX(col_name, "A")=0 | to check a prefix. Or use STRCMP(col_name, "A") = 0 if the column | value must be exactly "A". | | Simple comparison operations (>=, >, = , < , <=, sorting and grouping) | are based on each character's "sort value". Characters with the same | sort value (like E, e and 'e) are treated as the same character! | | LIKE comparisons are done on the uppercase value of each character | (E == e but E <> 'e) | | If you want a column always to be treated in case-sensitive fashion, | declare it as BINARY. Wenn das LIKE bei Christoph Hanser jetzt doch case-sensitive reagiert, dann ist die entsprechende Spalte entweder mit dem Attribut BINARY versehen oder MySQL wurde mit einer Zeichensatzoption übersetzt, die case-insensitivity nicht unterstützt, oder es ist eine ältere MySQL-Version (vor V3.10.17). Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive