sql >> データベース >  >> RDS >> Mysql

mySQL-utf8(英語以外)データへのラテン語(英語)フォーム入力のマッチング

    考えられる解決策は、データベース内の「artist」の横に「artist_normalized」のような別の列を作成することです。ここでは、テーブルにデータを入力しているときに、文字列の「正規化された」バージョンを挿入できます。その後、artist_normalized列に対して検索を実行できます。

    テストコード:

    <?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";
    }
    ?>
    

    結果:

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

    魔法はTransliteratorクラスによって行われます。指定されたルールは、文字列を分解し、発音区別符号を削除してから、正規化された文字列を再構成するという3つのアクションを実行します。PHPのTransliteratorはICUの上に構築されているため、これを行うことで、完全なICUライブラリのテーブルに依存します。信頼性があります。

    注:このソリューションには、 intlを備えたPHP5.4以降が必要です。 拡張機能。




    1. 春のデータと仕様の結合

    2. mysql.hファイルが見つかりません

    3. SQLServerデータベース開発用のGearHost入門

    4. OracleAppsのFND_LOBSテーブルについて知っておくべきこと