PG_全角转半角函数
来源:互联网 发布:网络彩票2018重启时间 编辑:程序博客网 时间:2024/03/29 03:26
CREATE OR REPLACE FUNCTION convertstring(text)
RETURNS text AS
$$
DECLARE
len INTEGER;
retval text;
tmp text;
asciival INT4;
difference INT4 := ascii('A')-ascii('A');
fullCase char[] := ARRAY[ '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '_', '{', '|', '}' ];
BEGIN
--文字数の取得
SELECT textlen($1) INTO len;
SELECT '' INTO retval;
--繰り返す
FOR i IN 1..len LOOP
--
SELECT substring($1, i, 1) INTO tmp;
SELECT ascii(tmp) INTO asciival;
BEGIN
--全角から半角に変更
IF (asciival >= ascii('A')) AND (asciival <= ascii('Z')) THEN
SELECT asciival-difference INTO asciival;
ELSIF (asciival >= ascii('a')) AND (asciival <= ascii('z')) THEN
SELECT asciival-difference INTO asciival;
ELSIF (asciival >= ascii('0')) AND (asciival <= ascii('9')) THEN
SELECT asciival-difference INTO asciival;
ELSE
FOR j IN 0..array_length(fullCase , 1 ) LOOP
IF (asciival = ascii(fullCase[j])) THEN
SELECT asciival-difference INTO asciival;
END IF;
END LOOP;
END IF;
END;
SELECT chr(asciival) INTO tmp;
SELECT textcat(retval, tmp) INTO retval;
END LOOP;
RETURN retval;
END;
$$
LANGUAGE 'plpgsql';
RETURNS text AS
$$
DECLARE
len INTEGER;
retval text;
tmp text;
asciival INT4;
difference INT4 := ascii('A')-ascii('A');
fullCase char[] := ARRAY[ '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '_', '{', '|', '}' ];
BEGIN
--文字数の取得
SELECT textlen($1) INTO len;
SELECT '' INTO retval;
--繰り返す
FOR i IN 1..len LOOP
--
SELECT substring($1, i, 1) INTO tmp;
SELECT ascii(tmp) INTO asciival;
BEGIN
--全角から半角に変更
IF (asciival >= ascii('A')) AND (asciival <= ascii('Z')) THEN
SELECT asciival-difference INTO asciival;
ELSIF (asciival >= ascii('a')) AND (asciival <= ascii('z')) THEN
SELECT asciival-difference INTO asciival;
ELSIF (asciival >= ascii('0')) AND (asciival <= ascii('9')) THEN
SELECT asciival-difference INTO asciival;
ELSE
FOR j IN 0..array_length(fullCase , 1 ) LOOP
IF (asciival = ascii(fullCase[j])) THEN
SELECT asciival-difference INTO asciival;
END IF;
END LOOP;
END IF;
END;
SELECT chr(asciival) INTO tmp;
SELECT textcat(retval, tmp) INTO retval;
END LOOP;
RETURN retval;
END;
$$
LANGUAGE 'plpgsql';
0 0
- PG_全角转半角函数
- 全角转半角函数
- javascript,全角转半角函数
- 转全角,半角的函数
- php全角转半角函数
- delphi 全角转半角函数
- 全角转半角函数 齐全
- php全角转半角函数
- MSSQL_全角转半角函数
- 全角转半角函数、全角数字转半角数字
- 全角半角转换函数
- 全角半角转换函数
- 全角半角转换函数
- 全角半角转换函数
- 全角转半角 半角转全角
- 全角转半角与半角转全角
- 半角转全角、全角转半角
- 转全角半角
- 认识HTML5的WebSocket
- FZU2150 Fire Game(搜索题:bfs)
- How zygote and render process was created in Chromium
- mac 下修改host文件
- 为UITextField添加placeholder属性
- PG_全角转半角函数
- 用instancetype代替id作为返回值
- ab压力测试.
- 怎样避免(F5)刷新页面造成的重复提交
- java 导出csv文件
- 响应式Web设计的9项基本原则
- BAT脚本编写教程
- 开发:随笔记录之 OSGI的jar添加几个小问题及其注意的地方
- 5段SQL可以测试出你对SQL性能优化知识了解多少