Vinzenz Mai: MySQL 5.0 - CONVERT() - CAST() ?

Beitrag lesen

Hallo,

Ich bräuchte ja eine Variante, die 'on the fly' die Daten in der Tabellen Spalte umwandelt und die Kollation (für die Abfrage) ändert.

Also nochmal die ganz konkrete Frage: Wie kann ich nur für die jeweilige Abfrage den Zeichensatz und die Kollation meiner in der Tabelle vorhandenen Werte von utf-8 utf8_unicode_ci nach latin1 latin1_german2_ci ändern?

here we go:

1. Schritt: eine nette Tabelle mit einer UTF8-Spalte:

CREATE TABLE example  
    (name VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci')  

2. Schritt: wir fügen unseren "Müller" in UTF-8 ein

INSERT INTO  
    example  
SET name = 'Müller'  

3. Schritt: wir suchen unseren Müller mit dem Suchtext "Mueller"

a) einfach so

SELECT  
    name  
FROM  
    example  
WHERE  
    name = 'Mueller'  

und bekommen erwartungsgemäß eine leere Ergebnismenge

name
---------

(0 Datensätze gefunden)

b) wir konvertieren unsere Spalte in latin1,
   weil latin1 die von uns benötigte Kollation latin1_german2 hat.
   (Groß- und Kleinschreibung wäre im Moment nicht benötigt):

SELECT  
    name  
FROM  
    example  
WHERE  
    [link:http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_convert@title=CONVERT](name USING latin1) COLLATE latin1_german2_ci = 'Mueller'  

und finden, wie von Dir gefordert, unseren Datensatz:

name
---------
Müller

(1 Datensatz gefunden)

Ich verstehe vermutlich Dein Problem nicht.

Freundliche Grüße

Vinzenz