SQL Plus 在输出中显示前 4 个和后 4 个数字



如何选择列的前 4 位数字和后 4 位数字,并对两者之间的所有数字使用"X"位置?

从用户中选择 id,其中 user_name ='Tom';

Output
5958694850384567

我试图只获取第一个和最后 4 个数字,其中 x 作为被屏蔽的任何数字的位置:

试图让它看起来像

Output:5958XXXXXXXX4567

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

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

谢谢你的时间!

您是否考虑过简单地使用 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并假设使用SQL Server,因此我将提供一些类似的代码来处理这种风格:

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

最新更新