sql >> Databasteknik >  >> RDS >> Mysql

Accentokänslig sökfråga i MySQL

Du kan ändra sorteringen vid körning i sql-frågan,

...where title like '%torun%' collate utf8_general_ci

men akta dig för att ändra sammanställningen i farten under körning avstår från möjligheten att mysql använder ett index, så prestanda på stora tabeller kan vara hemskt.

Eller så kan du kopiera kolumnen till en annan kolumn, till exempel searchable_title , men ändra sorteringen på den. Det är faktiskt vanligt att man gör den här typen av saker, där man kopierar data men har den i någon lite annorlunda form som är optimerad för någon specifik arbetsbelastning/syfte. Du kan använda triggers som ett bra sätt att hålla de dubblerade kolumnerna synkroniserade. Denna metod har potential att prestera bra, om den indexeras.

Obs - Se till att din db verkligen har dessa tecken och inte html-enheter. Dessutom spelar teckenuppsättningen för din anslutning betydelse. Ovanstående förutsätter att den är inställd på utf8, till exempel via set namn som set names utf8

Om inte behöver du en introducer för det bokstavliga värdet

...where title like _utf8'%torun%' collate utf8_general_ci

och naturligtvis måste värdet i de enskilda citattecken faktiskt vara utf8-kodat, även om resten av sql-frågan inte är det.



  1. MySQL vs MySQLi när du använder PHP

  2. skillnad mellan NLS_NCHAR_CHARACTERSET och NLS_CHARACTERSET för Oracle

  3. SET-operatorer i SQL

  4. Oracle DB citat kolumnnamn