2

artists名前列に「Miró」という値を持つレコードで名前が付けられたテーブルがあります。このリクエストを行うと:

SELECT "artists".* FROM "artists" WHERE name = 'Miró'

私は1つの結果を持っているので、うまくいきます。

今、私がこのリクエストを行うと(特別なものなしでó):

SELECT "artists".* FROM "artists" WHERE name = 'Miro'

何も見つかりません。特殊文字を無視したい。それを行う方法はありますか?
私はpostgres 9.1.9を持っています。

4

2 に答える 2

4

unaccent()よりターゲットを絞ったパターン マッチングには、追加モジュールunaccentによって提供されるfunction を使用できます。

SELECT * FROM artists WHERE unaccent(name) = 'Miro';

これを高速化するには、関数インデックスを作成します。機能は のみSTABLEであり、 ではないという障害を克服する必要がありIMMUTABLEます。最近、指示 (インストールを含む) とリンクを含む包括的な回答を書きました:
Does PostgreSQL support "accent insensitive" collat​​ions?

于 2013-06-18T21:22:20.333 に答える
0

代わりに LIKE を使用してみてください...

SELECT "artists".* FROM "artists" WHERE name like 'Mir%'
于 2013-06-18T21:14:29.873 に答える