2011-06-18 19 views
2

古いギリシャ語の検索機能(Wearch.nl)があります。
古いギリシャ語の単語には突然のアクセントがありますが、ῦはsameと同じではありませんが、「u」と入力するとῦとὐ(および他の5つのバリエーション)の結果が得られます。私は結果を得るためにMySQLのLIKE関数を使用しています。
私はそれらのすべてを検索することができましたが、それが短くて速くなることを願っています。ギリシャ文字をMySQLで検索する関数

答えて

2

あなたの列(またはテーブル)の文字セットを変更することができます場合は、utf8_general_ciに設定します(link to manual):

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_general_ci; 

_ciで示すように、大文字と小文字を区別しません。この文字セット(付き)、アクセント文字が同じ量()collationに使用される値を有するので、それらは)互いに(link to manualと比較した場合、真を返す:

非UCA照合が一対一を有します文字コードから重み付けへのマッピング。 MySQLでは、このような照合は大文字と小文字の区別がありません。 utf8_general_ciは例です: 'a'、 'A'、 'À'、 'á'の文字コードはそれぞれ ですが、すべて0xの0x0041の重みを持ち、等しいと比較します。

mysql> SET NAMES 'utf8' COLLATE 'utf8_general_ci'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT 'a' = 'A', 'a' = 'À', 'a' = 'á'; 
+-----------+-----------+-----------+ 
| 'a' = 'A' | 'a' = 'À' | 'a' = 'á' | 
+-----------+-----------+-----------+ 
|   1 |   1 |   1 | 
+-----------+-----------+-----------+ 
1 row in set (0.06 sec) 
代わり

、またはあなたがこの方法でデータベース構成を変更することができない場合、あなたはそれらの非アクセントの同等物(すなわちé - >e)でアクセント付き文字を置換する関数を書くことができますし、にこれを書きます専用検索フィールド(full-text searchフィールドを推奨)。このフィールドの検索を実行し、アクセント付きのフィールドをアプリケーションに返します。

+0

ご返信ありがとうございます、私はあなたの指示をした、私は文字セットをutf8_general_ciに設定しました。 LIKE関数を使用してサーバー上でクエリを実行すると、次のようになります。 'SELECT * FROM grieks WHERE gr LI LIKE"%ε%LIMIT 0,30' Itすべてのεフォーム(ε、ἔ、έなど)を選択します。しかし、私はこれをPHPからするとうまくいきません。 私は mysql_connect( "localhost"、 "deb ***** _ ******"、 "[password]")を使用します。 mysql_select_db( "deb ***** _ ******")またはdie( "データベースを選択できません"); mysql_query( "SET NAMES 'utf8'"); mysql_query( "SET CHARACTER SET 'utf8'"); ' データベースに接続します。 conectメソッドで何かを変更する必要がありますか? – Joeran

+0

私が使用しない場合 'mysql_query(" SET NAMES 'utf8' "); mysql_query( "SET CHARACTER SET 'utf8'"); ' 私は唯一の疑問符を取得し、ギリシャ文字はありません。 – Joeran

+1

この関数を試してみてくださいhttp://php.net/manual/en/function.mysql-set-charset.phpそしてgotchasのコメントを確認してください:) – Andy

関連する問題