/***************************************************************
* CVS			: $Id$
* Module Name	: U_kana2half
* Customer		: 
* Product		: 
* Description	: 引数の文字列の全角カナを半角カナに変換する関数
* Original		: 
* Modification	:
****************************************************************/
-- drop function kana2half(varchar);
CREATE FUNCTION kana2half(VARCHAR) RETURNS VARCHAR AS
'
declare
  p1  alias for $1;
  str varchar;
  len int;
  i int;
  zenkakus varchar;
  hankakus varchar;
begin
  str := p1;
  str := replace(str, ''ガ'', ''ガ'');
  str := replace(str, ''ギ'', ''ギ'');
  str := replace(str, ''グ'', ''グ'');
  str := replace(str, ''ゲ'', ''ゲ'');
  str := replace(str, ''ゴ'', ''ゴ'');
 
  str := replace(str, ''ザ'', ''ザ'');
  str := replace(str, ''ジ'', ''ジ'');
  str := replace(str, ''ズ'', ''ズ'');
  str := replace(str, ''ゼ'', ''ゼ'');
  str := replace(str, ''ゾ'', ''ゾ'');
 
  str := replace(str, ''ダ'', ''ダ'');
  str := replace(str, ''ヂ'', ''ヂ'');
  str := replace(str, ''ヅ'', ''ヅ'');
  str := replace(str, ''デ'', ''デ'');
  str := replace(str, ''ド'', ''ド'');
 
  str := replace(str, ''バ'', ''バ'');
  str := replace(str, ''ビ'', ''ビ'');
  str := replace(str, ''ブ'', ''ブ'');
  str := replace(str, ''ベ'', ''ベ'');
  str := replace(str, ''ボ'', ''ボ'');
 
  str := replace(str, ''パ'', ''パ'');
  str := replace(str, ''ピ'', ''ピ'');
  str := replace(str, ''プ'', ''プ'');
  str := replace(str, ''ペ'', ''ペ'');
  str := replace(str, ''ポ'', ''ポ'');
 
  zenkakus := ''アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョ'';
  hankakus := ''アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョ'';
  len := length(zenkakus);
  for i in 0 .. len loop
  	str := replace(str, substr(zenkakus, i, 1), substr(hankakus, i, 1));
  end loop;
  return str;
end;
'
LANGUAGE 'plpgsql'
;
 
最終更新:2008年11月16日 12:10