曾在一个项目中,由于邮编字段的数字录入时没有进行数字校验,出现全角数字字符,后来用户要求将全角数字在PostgreSQL数据库中转为半角。受网上技术文章启发,自己写了一个plpgsql对应的全半角转换函数。在此记录下来。
--全半角转换函数
--text:转换源字符
--integer:1-全角,其它-半角
CREATE OR REPLACE FUNCTION convertstring(text, integer)
RETURNS text AS
$$
DECLARE len INTEGER;
DECLARE retval text;
DECLARE tmp text;
DECLARE asciival INT4;
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;
IF ($2 = 1) THEN
BEGIN
--全角转半角
IF (asciival = 12288) THEN --空格
asciival = 32;
END IF;
IF (asciival > 65280) AND (asciival < 65375) THEN
SELECT asciival-65248 INTO asciival;
END IF;
END;
ELSE
BEGIN
--半角转全角
IF (asciival = 32) THEN --空格
asciival = 12288;
END IF;
IF (asciival < 127) THEN
SELECT asciival+65248 INTO asciival;
END IF;
END;
END IF;
SELECT chr(asciival) INTO tmp;
SELECT textcat(retval, tmp) INTO retval;
END LOOP;
RETURN retval;
END;
$$
LANGUAGE 'plpgsql'
SECURITY DEFINER;
分享到:
相关推荐
对postgresql数据库中不规则的数据批量处理查询,有些是全角的,需要转换查询,匹配,可以使用这个方法postgres全角转半角函数.txt
postgresql 兼容 oracle 函数, postgresql 兼容 oracle 函数,postgresql 兼容 oracle 函数, postgresql 兼容 oracle 函数
1. 博客:PostgreSQL的学习心得和知识总结(六十七)|语法级自上而下完美实现MySQL数据库的 IF函数和IFNULL函数 的实现方案
支持2万+汉字转拼音
PostgreSQl函数部分阅读笔记 关于函数部分在PostgreSQL中的实现问题的解释 聚集函数
基于PostgreSQL PostGIS的坐标转换函数,支持点、线、面的WGS84与GCJ02坐标互转
《PostgreSQL的Window分析函数源码优化》 Window(窗口)函数作为关系数据库领域中内数据库分析技术的一种解决方案, 其精妙的语义特征使其能代替自连接和相关子查询等完成传统复杂查询功能,现已被广泛应用到互联网...
postgresql 实现c language外部函数调用,为了提高数据库信息安全及数据库性能,通过c language实现相关功能,并编译成动态链接库so方式,供数据库postgresql调用,在数据库端只见函数的实现接口,隐藏实现细节
postgresql 字符串函数 收集各种字符串操作函数postgresql 字符串函数 收集各种字符串操作函数
postgresql数据类型转换.pdf
国外大牛写的一个mysql数据库转换postgresql的脚本。亲试可以无错误运行。
详细描述了DB2与GreenPlum/PostgreSQL在各方面的差异,主要用于DB2数据库向GreenPlum/PostgreSQL数据库的迁移。
PostgreSQL学习手册(函数和操作符<一>) PostgreSQL学习手册(函数和操作符<二>) PostgreSQL学习手册(函数和操作符<三>) PostgreSQL学习手册(索引) PostgreSQL学习手册(事物隔离) PostgreSQL学习手册(性能提升技巧原理...
PostgreSQL的DDL提取函数(ddlx)-源码
PostgreSQL 正则表达式 常用函数的总结 对那些需要进行复杂数据处理的程序来说,正则表达式无疑是一个非常有用的工具。本文重点在于阐述 PostgreSQL 的一些常用正则表达式函数以及源码中的一些函数。 正则相关部分的...
PostgreSQL全套课程,全套24.73G,包含免密视频、课件、相关文档,课程目录: 01.PostgreSQL9 从零开始学数据库管理开发视频教程 18课 02.炼数深度学习PostgreSQL 15课 03.PostgreSQL 9.3 DBA5天培训 24课 04....
mysql2postgresql, 转换mysql模式到 PostgreSQL mysql2postgresql转换mysql模式和数据到 PostgreSQL用法使用命令在xml格式中创建转储: mysqldump --xml -u USER_NAME DB_NAME> DUMP_FILE_NAME