MySQL und Like-Suche mit Umlauten

Ihr habt Probleme mit anderen Marken? Oder mit Sachen, die nicht euren Löwen betreffen? Dann ist das genau die richtige Schublade für euch.
freddy
Lenkradbeißer
Beiträge: 236
Registriert: Di 11.10.05 16:42
Land: Deutschland
Wohnort: 97723
Kontaktdaten:

Re: MySQL und Like-Suche mit Umlauten

Beitrag von freddy » So 15.01.06 23:29

Grade mal kurz bei Google unterwegs gewesen

http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html

SELECT ID FROM bundeslaender WHERE bezeichnung LIKE BINARY '%Oberösterreich%'

Spätabendlicher Erguss - ka obs passt

N8
Stefan

Benutzeravatar
Timon
Administrator
Beiträge: 12593
Registriert: Mi 21.03.01 00:00
Postleitzahl: 18437
Land: Deutschland
Wohnort: Stralsund
Kontaktdaten:

Re: MySQL und Like-Suche mit Umlauten

Beitrag von Timon » Mo 16.01.06 07:09

Bei dem BINARY ging es darum, dass MySql ohne BINARY bei "Oberösterreich" auch "Oberosterreich" gefunden hätte. BINARY macht die Suche genauer, weil sie die "Intelligenz" von MySql ausschaltet. Ein Effekt, den Andi gerne hätte *g*

Auf Arbeit habe ich noch irgendwo eine 4er Mysql-Version installiert. Musst dich nur etwas gedulden, bin noch zu Hause.

Gruß
Frank
Citroen C8, Diesel, 107PS, Automatik: Bild

Benutzeravatar
Timon
Administrator
Beiträge: 12593
Registriert: Mi 21.03.01 00:00
Postleitzahl: 18437
Land: Deutschland
Wohnort: Stralsund
Kontaktdaten:

Re: MySQL und Like-Suche mit Umlauten

Beitrag von Timon » Mo 16.01.06 08:03

Moin,

so, jetzt bin ich auf Arbeit :)
Ich sag mal, schmeiss Ubuntu weg *g*
Versuche mal, die LANG-Variable von UTF-8 auf de_DE.UTF-8 zu setzen. Mit "reinem" UTF-8 haben wir immer wieder Probleme, so dass wir meist wieder auf de_DE@euro zurückgegangen sind.

MySql 3

Code: Alles auswählen

mysql --version: mysql  Ver 11.18 Distrib 3.23.58, for pc-linux (i686)

uname -a: Linux 2.6.10 #1 SMP Tue Jan 25 15:36:51 CET 2005 i686 athlon i386 GNU/Linux

echo $LANG: de_DE@euro

mysql> create table test(line varchar(20));
Query OK, 0 rows affected (0.03 sec)

mysql> explain test;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| line  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> insert into test(line) values("Oberösterreich");
Query OK, 1 row affected (0.00 sec)

mysql> insert into test(line) values("Oberosterreich");
Query OK, 1 row affected (0.01 sec)

mysql> select * from test where line like '%Oberosterreich%';
+----------------+
| line           |
+----------------+
| Oberosterreich |
+----------------+
1 row in set (0.01 sec)

mysql> select * from test where line like '%Oberösterreich%';
+----------------+
| line           |
+----------------+
| Oberösterreich |
+----------------+
1 row in set (0.01 sec)
MySql 4

Code: Alles auswählen

mysql --version: mysql  Ver 12.22 Distrib 4.0.18, for suse-linux (i686)

uname -a: Linux server 2.6.5-7.202.7-smp #1 SMP Tue Nov 29 14:32:53 UTC 2005 i686 i686 i386 GNU/Linux

echo $LANG: de_DE.UTF-8

mysql> create table test(line varchar(20));
Query OK, 0 rows affected (0.00 sec)

mysql> explain test;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| line  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> insert into test(line) values("Oberösterreich");
Query OK, 1 row affected (0.00 sec)

mysql> insert into test(line) values("Oberosterreich");
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where line like '%Oberosterreich%';
+----------------+
| line           |
+----------------+
| Oberosterreich |
+----------------+
1 row in set (0.00 sec)

mysql> select * from test where line like '%Oberösterreich%';
+----------------+
| line           |
+----------------+
| Oberösterreich |
+----------------+
1 row in set (0.00 sec)


Gruß
Frank
Citroen C8, Diesel, 107PS, Automatik: Bild

Benutzeravatar
vulkanus
Polizistenkuschler
Beiträge: 5939
Registriert: Mi 21.03.01 00:00
Postleitzahl: 4655
Land: Oesterreich
Wohnort: GM/OÖ

Re: MySQL und Like-Suche mit Umlauten

Beitrag von vulkanus » Mo 16.01.06 11:34

Hehe, hab grad noch das mit Binary versucht, gebracht hats: nichts *g*
Bekomm dann

Code: Alles auswählen

mysql> select * from bundeslaender where bezeichnung like binary '%Oberösterreich%';
Empty set (0.14 sec)
Bringt also ned viel :)

Kubuntu wegschmeissen, der Gedanke kam mir gestern Abend im Bett auch noch. Ich mach jetzt einfach mal auf die zweite Partition auf der grade ein XP vor sich hinvegetiert Fedora drauf. RPM's gibts im Gegensatz zu DEB's ja wie Sand am Meer...
KTM - Ready to repair :D

Antworten