如何将一个字符串中的所有的全角假名转换成半角假名。
例如:
输入:"1あア2"
变成:"1ぁア2"
那位大侠,帮帮小弟。
9 个解决方案
#1
SELECT To_single_byte('1あア2') FROM dual; ---转成半角
--SELECT To_muil_byte('881898?71') FROM dual-----转成全角
--length(p1.accounts)!=lengthb(p1.accounts)----此条件是查出哪些记录里含有全角字符
--SELECT To_muil_byte('881898?71') FROM dual-----转成全角
--length(p1.accounts)!=lengthb(p1.accounts)----此条件是查出哪些记录里含有全角字符
#2
ORACLE 全角数字转半角数字
数据库表 test 字段 id name age
全角数字:123456
半角数字:123456
length和lengthb的区别:
length(123456) 6
lengthb(123456) 12
to_single_byte函数用法:
to_single_byte(123456) 123456
查找所有全角的数字:
select age from test where lengthB(age) >6
替换全角的为半角的:
update test t1 set t1.age = (select to_single_byte(t2.age) from test t2 where t1.id = t2.id)
ok!!
数据库表 test 字段 id name age
全角数字:123456
半角数字:123456
length和lengthb的区别:
length(123456) 6
lengthb(123456) 12
to_single_byte函数用法:
to_single_byte(123456) 123456
查找所有全角的数字:
select age from test where lengthB(age) >6
替换全角的为半角的:
update test t1 set t1.age = (select to_single_byte(t2.age) from test t2 where t1.id = t2.id)
ok!!
#3
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('ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ',
'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ',
'ン', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ー', '、', '。', '・', '」',
'「', '゙', ' ', ',', '<', '.', '>', '/', '?', '_', '}', ']', '*', ':', '+',
';', '{', '[', '~', '@', '|', '\', '`', '^', '=', '-', ')', '(', '&', '%',
'$', '#', '"', '!', '''');
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('ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ');
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('ワ', 'イ', 'エ', 'カ', 'ケ');
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;
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('ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ',
'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ',
'ン', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ー', '、', '。', '・', '」',
'「', '゙', ' ', ',', '<', '.', '>', '/', '?', '_', '}', ']', '*', ':', '+',
';', '{', '[', '~', '@', '|', '\', '`', '^', '=', '-', ')', '(', '&', '%',
'$', '#', '"', '!', '''');
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('ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ');
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('ワ', 'イ', 'エ', 'カ', 'ケ');
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;
#4
lv_moji := Translate(lv_moji,'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ','アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ');
lv_moji := Translate(lv_moji,'ぁぃぅぇぉゃゅょっゎ','ァィゥェォャュョッヮ');
lv_moji := Translate(lv_moji,'ぁぃぅぇぉゃゅょっゎ','ァィゥェォャュョッヮ');
#5
lv_moji := Translate(lv_moji,'あいうえおかきくけこさしすせそたちつてとなにぬねの','アイウエオカキクケコサシスセソタチツテトナニヌネノ');
#6
#7
#8
declare
v_zenkaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテ
トナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダ
ヂヅデドバビブベボパピプペポァィゥェォュョ';
v_kankaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ
ラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォ';
v_test_str varchar2(4000) := '123エ33*@(オsklス';
begin
v_test_str := TRANSLATE(v_test_str,v_zenkaku,v_kankaku);
v_test_str := TO_SINGLE_BYTE(v_test_str); dbms_output.put_line(v_test_str); end;
v_zenkaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテ
トナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダ
ヂヅデドバビブベボパピプペポァィゥェォュョ';
v_kankaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ
ラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォ';
v_test_str varchar2(4000) := '123エ33*@(オsklス';
begin
v_test_str := TRANSLATE(v_test_str,v_zenkaku,v_kankaku);
v_test_str := TO_SINGLE_BYTE(v_test_str); dbms_output.put_line(v_test_str); end;
#9
学习了。。。
#1
SELECT To_single_byte('1あア2') FROM dual; ---转成半角
--SELECT To_muil_byte('881898?71') FROM dual-----转成全角
--length(p1.accounts)!=lengthb(p1.accounts)----此条件是查出哪些记录里含有全角字符
--SELECT To_muil_byte('881898?71') FROM dual-----转成全角
--length(p1.accounts)!=lengthb(p1.accounts)----此条件是查出哪些记录里含有全角字符
#2
ORACLE 全角数字转半角数字
数据库表 test 字段 id name age
全角数字:123456
半角数字:123456
length和lengthb的区别:
length(123456) 6
lengthb(123456) 12
to_single_byte函数用法:
to_single_byte(123456) 123456
查找所有全角的数字:
select age from test where lengthB(age) >6
替换全角的为半角的:
update test t1 set t1.age = (select to_single_byte(t2.age) from test t2 where t1.id = t2.id)
ok!!
数据库表 test 字段 id name age
全角数字:123456
半角数字:123456
length和lengthb的区别:
length(123456) 6
lengthb(123456) 12
to_single_byte函数用法:
to_single_byte(123456) 123456
查找所有全角的数字:
select age from test where lengthB(age) >6
替换全角的为半角的:
update test t1 set t1.age = (select to_single_byte(t2.age) from test t2 where t1.id = t2.id)
ok!!
#3
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('ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ',
'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ',
'ン', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ー', '、', '。', '・', '」',
'「', '゙', ' ', ',', '<', '.', '>', '/', '?', '_', '}', ']', '*', ':', '+',
';', '{', '[', '~', '@', '|', '\', '`', '^', '=', '-', ')', '(', '&', '%',
'$', '#', '"', '!', '''');
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('ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ');
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('ワ', 'イ', 'エ', 'カ', 'ケ');
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;
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('ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ',
'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ヲ',
'ン', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ッ', 'ャ', 'ュ', 'ョ', 'ー', '、', '。', '・', '」',
'「', '゙', ' ', ',', '<', '.', '>', '/', '?', '_', '}', ']', '*', ':', '+',
';', '{', '[', '~', '@', '|', '\', '`', '^', '=', '-', ')', '(', '&', '%',
'$', '#', '"', '!', '''');
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('ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド',
'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ');
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('ワ', 'イ', 'エ', 'カ', 'ケ');
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;
#4
lv_moji := Translate(lv_moji,'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ','アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ');
lv_moji := Translate(lv_moji,'ぁぃぅぇぉゃゅょっゎ','ァィゥェォャュョッヮ');
lv_moji := Translate(lv_moji,'ぁぃぅぇぉゃゅょっゎ','ァィゥェォャュョッヮ');
#5
lv_moji := Translate(lv_moji,'あいうえおかきくけこさしすせそたちつてとなにぬねの','アイウエオカキクケコサシスセソタチツテトナニヌネノ');
#6
#7
#8
declare
v_zenkaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテ
トナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダ
ヂヅデドバビブベボパピプペポァィゥェォュョ';
v_kankaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ
ラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォ';
v_test_str varchar2(4000) := '123エ33*@(オsklス';
begin
v_test_str := TRANSLATE(v_test_str,v_zenkaku,v_kankaku);
v_test_str := TO_SINGLE_BYTE(v_test_str); dbms_output.put_line(v_test_str); end;
v_zenkaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテ
トナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダ
ヂヅデドバビブベボパピプペポァィゥェォュョ';
v_kankaku constant varchar2(4000) := 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ
ラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォ';
v_test_str varchar2(4000) := '123エ33*@(オsklス';
begin
v_test_str := TRANSLATE(v_test_str,v_zenkaku,v_kankaku);
v_test_str := TO_SINGLE_BYTE(v_test_str); dbms_output.put_line(v_test_str); end;
#9
学习了。。。