4

小さな問題が発生しました:

SELECT * FROM tableName tn WHERE LOWER(tn.name) = LOWER('place_string_here');

完璧にフィットする場合は問題ありません。

tn.name =オレンジの木

place_string_here =オレンジの木

しかし、私の問題は次のとおりです。

ヘストガルド

「Hästgård」が適合することを望みます: Hästgård、Hästgard、Hastgård、および/またはHastgard

それを行う賢い方法はありますか?

4

2 に答える 2

2

以下を使用できます。

クエリ:

SELECT * 
FROM tableName tn 
WHERE tn.name COLLATE 'utf8_general_ci' = 'place_string_here'

SQLFIDDL例

VALUES
('Hästgård', 'admin@sqlfiddle.com'),
('Twitter', '@sqlfiddle');

クエリ:

select id, type
from t
where type COLLATE 'utf8_general_ci' = 'hastgard'

結果:

| ID |     TYPE |
-----------------
|  1 | Hästgård |
于 2013-05-22T13:17:18.433 に答える
0

そのフィールドに latin1_swedish_ci COLLATION があったため、エラーが発生しました。照合を(「名前」フィールドの)utf8_general_ciに変更した後、正常に動作し始めました:-)

于 2013-06-17T12:55:46.573 に答える