你可以在查询时
先将全角转换成半角
或将半角转换成全角
再进行比较
提示:你可以看一下Word中的全角半角转换

解决方案 »

  1.   

    在构造条件的时候可以使用translate ... using来进行转换。
      

  2.   

    1.ORACLE自带的函数可以转换标点符号;
    2.fn_knachg函数为转换全半角函数
        参数:pKna为要转换的字符串;
              pPara:1为半角 → 全角;
                     2为全角 → 半角。string findSQL = "";
    string query = "abc";
    findSQL = "SELECT count(*) cout from test1 where fn_knachg(TO_MULTI_BYTE(test),1) like '%'||fn_knachg(TO_MULTI_BYTE('" + query + "'),1)||'%'";CREATE OR REPLACE FUNCTION fn_knachg(pKna IN VARCHAR2, pPara IN VARCHAR2) RETURN VARCHAR2 IS
    TYPE  t_Zen1 IS varray(95) of VARCHAR2(2);  
    tZen1  t_Zen1 := t_Zen1('ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ',
             'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
             'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ',
             'ン', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ー', '、', '。', '・', '」',
             '「', '゛', ' ', ',', '<', '.', '>', '/', '?', '_', '}', ']', '*', ':', '+',
             ';', '{', '[', ' ̄', '@', '|', '¥', '`', '^', '=', '-', ')', '(', '&', '%',
             '$', '#', '”', '!', '’');
    TYPE  t_Han1 IS varray(95) of VARCHAR2(2);
    tHan1  t_Han1 := t_Han1('ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ',
             'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
             'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ',
             'ン', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ー', '、', '。', '・', '」',
             '&#65378;', '&#65438;', ' ', ',', '<', '.', '>', '/', '?', '_', '}', ']', '*', ':', '+',
             ';', '{', '[', '~', '@', '|', '\', '`', '^', '=', '-', ')', '(', '&', '%',
             '$', '#', '"', '!', '''');
     
    TYPE  t_Zen2 IS varray(26) of VARCHAR2(2);  
    tZen2  t_Zen2 := t_Zen2('ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
             'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ');
    TYPE  t_Han2 IS varray(26) of VARCHAR2(4);
    tHan2  t_Han2 := t_Han2('&#65398;&#65438;', '&#65399;&#65438;', '&#65400;&#65438;', '&#65401;&#65438;', '&#65402;&#65438;', '&#65403;&#65438;', '&#65404;&#65438;', '&#65405;&#65438;', '&#65406;&#65438;', '&#65407;&#65438;', '&#65408;&#65438;', '&#65409;&#65438;', '&#65410;&#65438;', '&#65411;&#65438;', '&#65412;&#65438;',
             '&#65418;&#65438;', '&#65419;&#65438;', '&#65420;&#65438;', '&#65421;&#65438;', '&#65422;&#65438;', '&#65418;&#65439;', '&#65419;&#65439;', '&#65420;&#65439;', '&#65421;&#65439;', '&#65422;&#65439;', '&#65395;&#65438;');
     
    TYPE  t_Zen3 IS varray(5) of VARCHAR2(2);   
    tZen3  t_Zen3 := t_Zen3('ヮ', 'ヰ', 'ヱ', 'ヵ', 'ヶ');
    TYPE  t_Han3 IS varray(5) of VARCHAR2(2);
    tHan3  t_Han3 := t_Han3('&#65436;', '&#65394;', '&#65396;', '&#65398;', '&#65401;');
     
    sKna  varchar2(4000);
    i   int;
    BEGIN
     
    sKna := pKna;
    if pPara = '1' then  -- 半角 → 全角
      for i in 1..26 loop
       sKna := replace(sKna, tHan2(i), tZen2(i));
      end loop;
     
      for i in 1..95 loop
       sKna := replace(sKna, tHan1(i), tZen1(i));
      end loop;
      sKna := to_multi_byte(sKna);
    elsif pPara = '2' then -- 全角 → 半角
      for i in 1..26 loop
       sKna := replace(sKna, tZen2(i), tHan2(i));
      end loop;
     
      for i in 1..95 loop
       sKna := replace(sKna, tZen1(i), tHan1(i));
      end loop;
     
      for i in 1..5 loop
       sKna := replace(sKna, tZen3(i), tHan3(i));
      end loop;
      sKna := to_single_byte(sKna);
    end if;
    return sKna;
     
    END;