PostgreSQL去掉表中所有不可见字符
来源:互联网 发布:淘宝联盟红包很无耻 编辑:程序博客网 时间:2024/06/03 21:59
问题描述
数据库中的某些数据中包含了某些不可见字符。ASCII码中的0-31,127属于控制字符,不可见,详情见wiki–控制字符。
这些不可见字符往往是不需要的,我们要想办法删除它。
解决办法
写一函数,将所有字段中的不可见字符替换为空格。
测试流程
环境准备
建表,并插入带不可见字符的记录。注:下列数据中的不可见字符在粘贴过来的时候自动去掉了,请按ALT
+数字键
加入。
CREATE TABLE public.test_table( xm character varying(50), pinyin character varying(200), sm character(15))WITH ( OIDS=FALSE);ALTER TABLE public.test_table OWNER TO postgres;-- ------------------------------ Records of test_table-- ----------------------------INSERT INTO ry_syrk_copy VALUES ('周小星xx', 'xx测试','测试' );INSERT INTO ry_syrk_copy VALUES ('李华', '测试xx','世xx界' );
注:因不可见字符无法在CSDN中无法打出,故用xx
代替。实际上在其它地方可以用ALT+数字键
打印出来。
去掉表中所有的不可见字符
-- 函数说明:将表test_table中所有的不可见字符替换掉CREATE OR REPLACE FUNCTION delete_special_char() RETURNS int8 AS $$DECLARE row RECORD; BEGIN-- 查询表中所有类型为字符串的列FOR row in select column_name from information_schema.columns where table_name = 'test_table' and data_type like 'character%' LOOP FOR i IN 1..31 LOOP --替换所有的不可见字符为空格(除了chr(0)之外) EXECUTE 'update test_table set ' || row.column_name || ' = replace(' || row.column_name || ', chr(' || i || '), '' '' )'; END LOOP; END LOOP;RETURN 1;END;$$ LANGUAGE plpgsql;
执行函数
执行函数–select * from delete_special_char()
,之后查看表数据,所有的不可见字符都被替换为空格。
补充–如何删除chr(0)
值得注意的是上述函数并不能删除chr(0)
的不可见字符,见如下测试。
但oracle中上述语句却可以成功执行,见参考博文3。
参考
[1]. SQL Server 不可见字符处理
[2]. 字符串中的不可见字符应该如何清除?
[3]. Oracle中varchar2字段的不可见字符处理
1 1
- PostgreSQL去掉表中所有不可见字符
- PostgreSQL 去除字符串中的不可见字符 终极方法
- Vim中显示不可见字符
- sqlserver 中遇到一些不可见字符
- Vim中显示不可见字符
- 常用不可见字符
- 不可见字符
- oracle去掉字符串中所有指定字符
- oracle去掉字符串中所有指定字符
- 去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
- 去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符
- linux vi 中替换不可见字符^@\^A\^M等
- 注意不可见的字符!
- oracle中的不可见字符
- eclipse显示不可见字符
- linux 不可见字符查看
- Python过滤不可见字符
- notepad 显示不可见字符
- java备忘
- 查询浏览器版本
- can总线
- CF D. DZY Loves Strings(字符串hash 暴力)
- mysql
- PostgreSQL去掉表中所有不可见字符
- 算法:查找int数组中重复的数据
- ognl取值的代码
- ARM linux的启动部分源代码简略分析
- hive maven 编程
- 暴力,STL,哈希技术,Floyd判圈算法(计算器谜题,uva 11549)
- 欧拉工程第24题 0,1,2,3,4,5,6,7,8,9的第100万个字典排列是什么
- 浅析java集合框架
- ASP.NET中() => 代表什么