SELECT emp_name "隐藏之前",
CASE char_length(emp_name)
WHEN 2 THEN concat('*', substr(emp_name, 2, 1))
ELSE concat(substr(emp_name, 1, char_length(emp_name)-2), '*', substr(emp_name, -1, 1))
END "隐藏之后"
FROM employee
ORDER BY emp_id
LIMIT 5;
隐藏之前|隐藏之后|
-------|------|
刘备 |*备 |
关羽 |*羽 |
张飞 |*飞 |
诸葛亮 |诸*亮 |
黄忠 |*忠 |
SELECT emp_name "隐藏之前",
concat(substr(emp_name, 1, char_length(emp_name)-2), '*', substr(emp_name, -1, 1)) "隐藏之后"
FROM employee
ORDER BY emp_id
LIMIT 5;
SELECT emp_name "隐藏之前",
insert(emp_name, char_length(emp_name)-1, 1,'*') "隐藏之后"
FROM employee
ORDER BY emp_id
LIMIT 5;
隐藏之前|隐藏之后|
-------|------|
刘备 |*备 |
关羽 |*羽 |
张飞 |*飞 |
诸葛亮 |诸*亮 |
黄忠 |*忠 |
SELECT insert('13612345678', char_length('13612345678')-7, 4, '****') phone1,
insert('+861013612345678', char_length('+861013612345678')-7, 4, '****') phone2;
phone1 |phone2 |
-----------|----------------|
136****5678|+8610136****5678|
SELECT insert('320101200206014057', 7, 8, '*******') AS id;
id |
-----------------|
320101*******4057|
SELECT concat(substr('320101200206014057', 1, 6), '********', substr('320101200206014057', -4, 4)) AS id;
id |
-----------------|
320101*******4057|
原文作者:SQL编程思想;如有侵权,请联系管理员删除。