postgresql搜索不区分大小写的日语字符(全宽,半宽)

时间:2015-09-26 10:48:18

标签: postgresql

在posgresSQL中,我可以使用低/高字符数据(a / A)

搜索不敏感

但是在数据中使用japansese字符我该怎么做呢。 例如,在数据中我有Name =“アアバババ”

如何使用condtion进行搜索Name =“アアアバババ”将返回上述记录。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助,我尝试了这段代码,这对我有用,但我没有尝试大数据

CREATE OR REPLACE FUNCTION h2z_kana(text) 
  RETURNS text AS
$BODY$
    DECLARE
        zenkaku alias FOR $1;
        result text;
        i int;


        zt varchar[] = ARRAY['ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ'];
        ht varchar[] = ARRAY['ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ'];
    BEGIN


        result = zenkaku;


        -- 2バイトで変換
        FOR i IN 1..26 LOOP
            result = replace(result, ht[i], zt[i]);
        END LOOP;


        -- 1バイトで変換
        result = translate(result,
                   ' アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョワイエカケー、。・」「゙,<.>/?_}]*:+;{[~@|\\`^=-)(&%$#"!',
                   ' アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヮヰヱヵヶー、。・」「゛,<.>/?_}]*:+;{[ ̄@|¥`^=-)(&%$#"!'
              );


        RETURN result;
    END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;