在数据库中难免会遇到需要对数据进行脱敏的操作,无论是姓名,还是身份证号. 最近遇到一个需求,需要对姓名进行脱敏: 姓名长度为2,替换为姓+*: 姓名长度为3,替换中间字符为*: 姓名长度为4,替换第3个字符为*: 经过一番搜索之后,最终找到了3种方式的实现,具体如下. 一.先查找,再替换 ,),'*') as name from dual; 注意:此种方法通过对第2个字符进行替换,如果名字为叠名,则会发生上述误替换情况: 二.拼接 ,),) as name from dual; 三.使用rege
SELECT ORDER_PROJECT.project_type AS attribute, ORDER_PROJECT.order_num, ,), "*") AS pv, CUSTOMER.province AS area, ,), "****") AS mobile0 FROM ORDER_PROJECT, CUSTOMER, ORDER_LOG ORDER BY ORDER_PROJECT.id DESC LIMIT ; 0.姓名脱敏,对姓名第二个字用*进
--查询并打印员工的姓名和薪水 --set serveroutput on /* 1.光标的属性 %found:假设取到了记录就是true否则是false: %notfound: */ declare --定义一个光标 cursor cemp is select ename,sal from emp; --为光标定义相应的变量 pename emp.ename%type; psal emp.sal%type; begin --打开光标 open cemp; loop --取一条记录 into后面
一.思路:首先判断这个查询的是emp表,需要接收值,声明一个rowtype类型接收数据即可,第二是,存在exception,需要处理,exception中有两种异常,分别处理即可,分别输出即可. 二.在增删改之后加上commit提交事物. 三.具体实现 declare -- 声明rowtype类型接收数据即可 v_emp emp%rowtype; begin -- 查询员工中姓为“SMITH” select * into v_emp from emp where ename='SMITH'; d
一.思路:首先输出需要变量接收,需要声明变量,于是考虑什么变量类型比较合适,在这我用的是table类型,最后,查询出来,循环输出即可. 二.具体实现 -- 编写一个PL/SQL块,输出所有员工的员工姓名.员工号.工资和部门号 declare -- 声明table类型的对象,属性 员工姓名:ename,员工号:empno,工资:sal ,部门:deptno type emp_table_type is table of emp%rowtype index by binary_integer; --
SELECT TGTID,PHONENUM,REGISTERDATE ,to_date(REGISTERDATE,'YYYY-MM-DD HH24:MI:SS') AS T FROM WTRESSENWEB.T_AXMALL_COMMONCLIENT WHERE TGTID = '2087' AND to_date(REGISTERDATE,'YYYY-MM-DD HH24:MI:SS') > to_date('2014-07-09','yyyy-mm-dd'); 对于to_char() to_