PostgreSQLで「ァ」と「ア」を区別せず検索した
とあるシステムで、カナ検索が出来ないという指摘を受けた。
コードを読んでみるとおそらく「フアンタ」のように登録して欲しいところ「ファンタ」と入っていたので、likeじゃ検索出来ていなかった。
で、かなり力技だけど、こんな関数を使って解決しました。
create or replace function to_large_text(text) returns text AS ' SELECT translate(upper($1) ,''-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンァィゥェォャュョヮぁぃぅぇぉゃゅょゎ '' ,''−0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンアイウエオヤユヨワあいうえおかやゆよわ ''); ' language 'sql';
2013/8/30追記
「ポッカ」とかが変換できていなかったので修正
create or replace function to_large_text(text) returns text AS ' SELECT translate(upper($1) ,''-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンァィゥェォヵヶッャュョヮぁぃぅぇぉゃゅょゎ '' ,''−0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲンアイウエオカケツヤユヨワあいうえおかやゆよわ ''); ' language 'sql';