プロが教えるわが家の防犯対策術!

いつもお世話になっております。

あいまい検索で、英文字の全角・半角も区別しないように結果を出したいんですが、どういった方法でできますでしょうか。

大文字小文字の区別なしの曖昧検索だと、

ILIKEという専用演算子を使えばいいとわかったのですが、
全角と半角の区別がついてしまいます。

英文字の全角でも半角でも検索結果をだしたいです。
どなたかご教授お願いいたします。

A 回答 (4件)

失礼しました(文面をよく読んでいませんでした)。


半角全角変換関数ですがデータベースがutf8で作成されているのが前提
ですが、plperluを使えば以下のようにできます。
CREATE or REPLACE FUNCTION perl_h2z (varchar) RETURNS varchar AS $$
use utf8;
use Unicode::Japanese;
my ($a) = @_;
if (! defined $a) {
return undef;
}
my $b;
$b = Unicode::Japanese->new($a)->h2z->get;
return $b;
$$ LANGUAGE plperlu;

ご参考までに。
    • good
    • 0

ILIKEは大文字小文字同一視で全角半角は不可。



変換は簡単だと思うので自力で関数関数を書けばいいのかもしれませんね
関数の書き方はよくわかりません(補足を・・

//全角英数→半角
 条件:( 0xff01<=code<=0xff5e )
 計算:code-0xfee0);
    • good
    • 0

Postgresql 7.1以降なら同じく正規表現で「ILIKE」が使えるようです。



http://lib.stwing.jp/archives/2006/12/postgresql …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

大文字と小文字、たとえば「A」と「a」の区別は出来ましたが、
全角と半角、「A」「A」の区別ができません。
Postgresqlは8.2です。

お礼日時:2008/07/17 14:39

正規表現を使って"[Aa][Bb][Cc].*" のように比較してみては。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!