求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)  SPECI...显示全部
求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

查看其它 2 个回答hotmail的回答

hotmailhotmail软件开发工程师hotmail
半角全角转换
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
浏览1970

回答者

hotmail
软件开发工程师hotmail
擅长领域: 数据库服务器云计算

hotmail 最近回答过的问题

回答状态

  • 发布时间:2015-03-24
  • 关注会员:1 人
  • 回答浏览:1970
  • X社区推广