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

SQL Plus显示输出中的前四个和后四个数字,sql,sqlplus,substr,Sql,Sqlplus,Substr,如何选择前4位和后4位的列,并对中间的所有数字使用“X”位置 范例 从user_name='Tom'所在的用户中选择id 我尝试只获取第一个和最后4个数字,其中x作为任何被屏蔽数字的位置: 试着让它看起来像 Output:5958XXXXXXXX4567 以下是我目前的疑问: SELECT SUBSTR(id, 1, 4) from users where user_name ='Tom' 谢谢你抽出时间 您是否考虑过简单地使用和函数?这些将分别从给定字符串的左侧或右侧为您提供特定数量的字符

如何选择前4位和后4位的列,并对中间的所有数字使用“X”位置

范例

从user_name='Tom'所在的用户中选择id

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

试着让它看起来像

Output:5958XXXXXXXX4567
以下是我目前的疑问:

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

谢谢你抽出时间

您是否考虑过简单地使用和函数?这些将分别从给定字符串的左侧或右侧为您提供特定数量的字符

您还可以使用以下函数组合这些内容来构建完整的字符串:

SELECT CONCAT(LEFT(id, 4), 'XXXXXXXX', RIGHT(id, 4))
  FROM users
 WHERE user_name = 'Tom'
此外,如果字符串中不总是包含给定数量的字符,还可以通过函数和一点数学计算输出的中间部分:

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'

谢谢@RION!在第1行尝试使用concate错误时,我遇到以下错误:ORA-00909:参数数无效基于该错误,看起来您使用的是Oracle而不是SQL Server。我添加了一个示例,它可能适用于您的环境。如果没有,请告诉我,我会进一步调整。
SELECT LEFT(id, 4) || RPAD('X', LEN(id) - 8, 'X') || RIGHT(id, 4)
  FROM users
 WHERE user_name = 'Tom'