Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mySQL - dopasowywanie danych wejściowych z łacińskiego (angielskiego) formularza do danych utf8 (innych niż angielski)

Możliwym rozwiązaniem byłoby utworzenie kolejnej kolumny w bazie danych obok „artysty”, np. „artist_normalized”. Tutaj, podczas wypełniania tabeli, możesz wstawić „znormalizowaną” wersję ciągu. Następnie można przeprowadzić wyszukiwanie w kolumnie artist_normalized.

Kod testowy:

<?php
$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);
$test = ['abcd', 'èe', '€', 'àòùìéëü', 'àòùìéëü', 'tiësto'];
foreach($test as $e) {
    $normalized = $transliterator->transliterate($e);
    echo $e. ' --> '.$normalized."\n";
}
?>

Wynik:

abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto

Magię wykonuje klasa Transliterator. Określona reguła wykonuje trzy akcje:rozkłada ciąg znaków, usuwa znaki diakrytyczne, a następnie rekomponuje ciąg, przekształca go w kanonizację.Transliterator w PHP jest zbudowany na ICU, więc robiąc to, polegasz na tabelach biblioteki ICU, które są kompletne i niezawodny.

Uwaga:to rozwiązanie wymaga PHP 5.4 lub nowszego z intl rozszerzenie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. W jaki sposób Wordpress łączy posty z kategoriami w swojej bazie danych?

  2. Wybierz 3 najnowsze rekordy, w których wartości jednej kolumny są różne

  3. Czy ktoś może wyjaśnić klucze obce MySQL?

  4. Polecenie MySQL Wyjaśnij ignorować LIMIT?

  5. Błąd krytyczny:wywołanie niezdefiniowanej metody mysqli_stmt::get_result()