1

比較時にアクセントを無視して LOCATE を使用するにはどうすればよいですか? 例えば:

SELECT LOCATE('a', 'João'); -- Fail
>> Currently: 0
>> Need:      3

SELECT LOCATE('ã', 'João'); -- Ok
>> Currently: 3
>> Need:      3

どうすればそれができますか?この場合、LIKE は使用できません (動作します!)。

4

2 に答える 2

3

良い解決策は次のとおりです(Michael Miorの回答に基づく):

  SELECT LOCATE('a', CONVERT('João' USING latin1));

ベンチマーク (Michael Mior 法):

  SET character_set_connection='latin1';
  SELECT LOCATE('a', 'João');
  >> 10.000.000 run at 0.532s

ベンチマーク (現在の方法):

  SELECT LOCATE('a', CONVERT('João' USING latin1));    
  >> 10.000.000 run at 1.906s

Michael Mior バージョンは 4 倍高速です。

于 2012-07-13T23:51:49.020 に答える
1

文字セットを使用するとlatin1、一部のアクセントが無視されます。ただし、一部の入力では予期しない動作が発生する可能性があるため、十分にテストしてください。

SET character_set_connection='latin1';
SELECT LOCATE('a', 'João');
于 2012-07-13T21:15:02.230 に答える