SQL Plus显示输出中的前四个和后四个数字

时间:2017-05-25 19:15:48

标签: sql sqlplus substr

如何选择前4位和后4位的列,并使用“X”位置来表示其间的所有数字?

示例

  

来自user_name ='Tom';

的用户的SELECT id
Output
5958694850384567

我试图只将第一个和最后4个数字用x作为被屏蔽的任何数字的展示位置:

试图让它看起来像

Output:5958XXXXXXXX4567

到目前为止,这是我的查询:

SELECT SUBSTR(id, 1, 4) from users
where user_name ='Tom'

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用LEFT()RIGHT()功能?这些将分别从给定字符串的左侧或右侧给出特定数量的字符。

您还可以使用CONCAT()函数组合这些来构建完整的字符串:

SELECT CONCAT(LEFT(id, 4), 'XXXXXXXX', RIGHT(id, 4))
  FROM users
 WHERE user_name = 'Tom'

此外,如果你不总是在字符串中有一定数量的字符,你可以通过REPLICATE()函数和一些数学计算输出的中间部分:

SELECT CONCAT(LEFT(id, 4), REPLICATE('X', LEN(id) - 8), RIGHT(id, 4))
  FROM users
 WHERE user_name = 'Tom'

Oracle版本

我没有意识到您是专门使用Oracle并假设使用SQL Server,因此我将提供一些类似的代码来处理这种风格:

SELECT LEFT(id, 4) || RPAD('X', LEN(id) - 8, 'X') || RIGHT(id, 4)
  FROM users
 WHERE user_name = 'Tom'