MySQL 正規表現での Unicode マッチング
MySQL の正規表現はバイト単位のアプローチを採用しているため、Unicode マッチングには適していません。ほとんどの情報源がこの制限を報告しており、Unicode パターン マッチングでの使用について懸念が生じています。
そのような場合、Unicode パターン マッチングと同様に、正規表現の代わりに LIKE を使用することが推奨されますか? ASCII 拡張パターン マッチングでは、regexp が依然として有効なオプションです。
Unicode マッチングにおける LIKE の利点
LIKE Unicode 文字をサポートし、Unicode テキストでの簡単なパターン マッチングを可能にします。さらに、文字列の先頭または末尾で一致検索が可能です。
WHERE foo LIKE 'bar%' -- Search for strings starting with "bar" WHERE foo LIKE '%bar' -- Search for strings ending with "bar"
Unicode での正規表現の制限
バイト単位の実装のため、正規表現はマルチバイト文字セットでは不正確な結果が生じる可能性があります。さらに、アクセント付き文字は、特定の照合順序で同等であるとみなされる場合でも、同等であると比較できない場合があります。
以上がMySQL での Unicode マッチングには REGEXP の代わりに LIKE を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。