求DB2半角字符转全角自定义函数

求DB2半角字符转全角自定义函数
百度到如下一个,但是没作用
SET SCHEMA DB2ADMIN;

SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","DB2ADMIN";

CREATE FUNCTION ODS.TO_ANGLE_SYTE
(P_INTER VARCHAR(100)
)
  RETURNS VARCHAR(100)
  SPECIFIC ODS.TO_ANGLE_SYTE
  LANGUAGE SQL
  NOT DETERMINISTIC
  READS SQL DATA
  STATIC DISPATCH
  CALLED ON NULL INPUT
  EXTERNAL ACTION
  INHERIT SPECIAL REGISTERS
  BEGIN
  DECLARE I_STR VARCHAR (2);
DECLARE I INTEGER DEFAULT 1;
DECLARE CODE INTEGER;
DECLARE O_RETVAL VARCHAR (300) DEFAULT '';
SET P_INTER = REPLACE (P_INTER, ' ', ' ');
IF (TRIM (P_INTER) <> '')
THEN
WHILE I <= LENGTH (P_INTER, CODEUNITS32)
DO
SET I_STR =
SUBSTRING (P_INTER,
I,
1,
CODEUNITS32);
SET CODE = ASCII (I_STR);
IF (CODE = 163)
THEN
SET O_RETVAL =
O_RETVAL || CHR (ASCII (SUBSTR (I_STR, 2, 1)) - 128);
ELSE
SET O_RETVAL = O_RETVAL || I_STR;
END IF;
SET I = I + 1;
END WHILE;
ELSE
SET O_RETVAL =P_INTER;
END IF;
RETURN O_RETVAL;
END;
有没有别的可以借鉴,或者要怎么写啊
参与5

3同行回答

hotmailhotmail软件开发工程师hotmail
半角全角转换DB2 的字符串数据类型有单字节和双字节之分。所以,当我们想把 半角变成全角的时候,其实就是单字节变成双字节,运用我们之前学过的类型转换函数即可。有以下几个函数可用:1. GRAPHIC2. VARGRAPHIC3. LONG_VARGRAPHIC4. DBCLOB5. 例如:6. 数字:VALUES VARGRAPHIC('12...显示全部
半角全角转换
DB2 的字符串数据类型有单字节和双字节之分。所以,当我们想把 半角变
成全角的时候,其实就是单字节变成双字节,运用我们之前学过的类型转换函数
即可。有以下几个函数可用:
1. GRAPHIC
2. VARGRAPHIC
3. LONG_VARGRAPHIC
4. DBCLOB
5. 例如:
6. 数字:VALUES VARGRAPHIC('1234567890');
7. 空格:VALUES VARGRAPHIC(' ');
8. 字母:VALUES VARGRAPHIC('abcABC');
9. 日文假名:VALUES VARGRAPHIC('カナカナ');
那么,当我们想把 全角变成半角的时候,其实就是把双字节变成单字节,运
用我们之前学习过的类型转换函数,如下:
1. CHAR
2. VARCHAR
3. LONG_VARCHAR
4. CLOB
5. 例如:VALUES VARCHAR('1234567890 ABCABCカナカナ');
然而,结果却并没有转化成半角,原因是用单引号括起来的字符串,在默认的情
况下就是单字节字符串。我们可以这么写:
1. VALUES VARCHAR(VARGRAPHIC('1234567890 abcABCカナカナ')) ;
不过,遗憾的是以上的 全角转半角函数只支持 Unicode 编码的数据库。收起
互联网服务 · 2015-03-24
浏览1944
苏州易博创云苏州易博创云CTO苏州易博创云网络科技有限公司
这种转换最好包装在java存储过程中去做 。显示全部
这种转换最好包装在java存储过程中去做 。收起
IT咨询服务 · 2015-03-26
浏览1858
lelelele其它上海通方
回复 2# hotmail 谢谢指点:D 我要转换的字符串里有括号和加减乘除符号,想把它们统一来着。昨天没找到函数就用replace叠加替换掉了。你给的函数我会好好看的{:3_57:}显示全部
回复 2# hotmail

谢谢指点:D
我要转换的字符串里有括号和加减乘除符号,想把它们统一来着。昨天没找到函数就用replace叠加替换掉了。你给的函数我会好好看的{:3_57:}收起
软件开发 · 2015-03-25
浏览1817

提问者

lele
其它上海通方

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-03-24
  • 关注会员:1 人
  • 问题浏览:4463
  • 最近回答:2015-03-26
  • X社区推广