sql >> Database >  >> RDS >> Mysql

normaliseren van tekens met accenten in MySQL-query's

De reden voor de fout is niet de tabel maar de karakterset van je invoer, oftewel de 'rené' in je query. Het gedrag hangt af van de character_set_connection variabele:

Gebruik de MySQL-client en wijzig deze met SET NAMES :

SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

(van http://dev.mysql.com/doc /refman/5.5/en/charset-connection.html )

Voorbeelduitvoer:

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Als alternatief kan gebruik de tekenset expliciet instellen met behulp van een 'tekenset-introducer':

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = _utf8'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Ik weet dat deze vraag vrij oud is, maar aangezien Google me hierheen heeft geleid voor een gerelateerde vraag, vind ik het toch een antwoord waard :)



  1. Het aantal kolommen van mysql.user is onjuist. Verwacht 42, gevonden 44. De tabel is waarschijnlijk beschadigd

  2. PRINT-instructie in T-SQL

  3. Een primaire sleutel voor automatische verhoging definiëren in SQL Server

  4. varchar2(n BYTE|CHAR) standaard -> CHAR of BYTE