PostgreSQL去掉表中所有不可见字符
发布时间:2020-12-13 17:02:25 所属栏目:百科 来源:网络整理
导读:问题描述 数据库中的某些数据中包含了某些不可见字符。ASCII码中的0-31,127属于控制字符,不可见,详情见wiki–控制字符。 这些不可见字符往往是不需要的,我们要想办法删除它。 解决办法 写一函数,将所有字段中的不可见字符替换为空格。 测试流程 环境准备
问题描述数据库中的某些数据中包含了某些不可见字符。ASCII码中的0-31,127属于控制字符,不可见,详情见wiki–控制字符。 这些不可见字符往往是不需要的,我们要想办法删除它。 解决办法写一函数,将所有字段中的不可见字符替换为空格。 测试流程环境准备建表,并插入带不可见字符的记录。注:下列数据中的不可见字符在粘贴过来的时候自动去掉了,请按 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中无法打出,故用 去掉表中所有的不可见字符-- 函数说明:将表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;
执行函数执行函数– 补充–如何删除chr(0)值得注意的是上述函数并不能删除 参考[1]. SQL Server 不可见字符处理 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |